当前位置: 首页 > 面试题库 >

Java构造函数和静态方法

莘翰采
2023-03-14
问题内容

什么时候应该使用构造函数,什么时候应该使用静态方法?

您能用小片段解释一下吗?我略读了一些线程,但是我仍然不清楚。


问题答案:

当您只想返回该类型的新对象并且希望简单时,请使用公共构造函数。

一个很好的例子是StringBuilder,因为它是可变的,您可能每次都想要一个新对象。

public String toString() {
    StringBuilder sb = new StringBuilder();
    // append fields to the sb
    return sb.toString();
}

当您可能想重用对象(尤其是不可变的对象),返回子类或描述结构时,请使用静态因子方法。一个很好的例子是EnumSet,它具有许多静态工厂,即使有些工厂具有相同的参数,它们也会做不同的事情。

EnumSet.noneOf(RetentionPolicy.class);
// has the same arguments, but is not the same as
EnumSet.allOf(RetentionPolicy.class);

在这种情况下,使用静态工厂可以清楚地知道这两种构造集的区别。

而且EnumSet可以返回两种不同的实现,一种针对具有少量值(<=
64)的枚举进行优化,RegularEnumSet而另一种则针对称为JumboEnumSet



 类似资料:
  • 本文向大家介绍C#静态构造函数?相关面试题,主要包含被问及C#静态构造函数?时的应答技巧和注意事项,需要的朋友参考一下 最先被执行的构造函数,且在一个类里只允许有一个无参的静态构造函数 执行顺序:静态变量>静态构造函数>实例变量>实例构造函数  

  • 我是新爪哇,目前正在大学读一门课程。我们使用Java编程早期对象作为课程文献。我有一个关于新对象构造函数的问题。这本书非常明确地指出,“即使这样做是可能的,也不要从构造函数调用方法。” 这是所有的方法吗,句号?我理解从构造函数调用类自己的实例方法的问题。但是帮手方法等? 这可以接受吗?如果没有,我想你不能在构造函数中使用任何Java数学util函数或类似的东西?

  • 本文向大家介绍解析C#中的私有构造函数和静态构造函数,包括了解析C#中的私有构造函数和静态构造函数的使用技巧和注意事项,需要的朋友参考一下 私有构造函数 私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。例如: 声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问

  • 问题内容: 有没有一种方法可以强制(子)类在C#或Java中使用具有特定签名或特定静态方法的构造函数? 您显然不能为此使用接口,而且我知道它的用法会受到限制。我确实发现它有用的一个实例是您想要实施一些设计准则时,例如: 异常 它们都应该具有四个规范的构造函数,但是没有办法强制执行。您必须依靠FxCop之类的工具(C#情况)才能捕获这些信息。 运算符 没有指定可以对两个类求和的合约(C#中的oper

  • 问题内容: 我是AP Java学生,正在为考试做练习。我遇到了这个问题,但我不明白答案: 考虑以下类别: 执行以下代码后输出是什么: 正确答案是B *。有人可以向我解释方法调用的顺序吗? 问题答案: B构造函数被调用。B构造函数的第一条隐式指令是(调用超类的默认构造函数)。因此,调用了A的构造函数。A的构造函数调用,它调用java.lang.Object构造函数,该构造函数不输出任何内容。然后被称

  • 我是Java的新手,正在处理一个家庭作业问题。该问题指定使用一个构造函数创建一个Temperature类,该构造函数接受华氏温度(作为double)并将其存储在字段中。setFahrenheit方法接受一个华氏温度(以双倍数形式),并将其存储在字段中。 这在我看来是多余的。setFahrenheit方法不是和构造函数完全一样吗?