什么时候应该使用构造函数,什么时候应该使用静态方法?
你能用小片段来解释上面的内容吗?我浏览了一些线索,但我仍然不清楚这一点。
发布于 2012-12-10 22:37:42
当您只想返回该类型的新对象并且希望简单性时,请使用公共构造函数。
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);
在这种情况下,使用静态工厂可以清楚地看到这两种构造set的方式之间的区别。
此外,EnumSet可以返回两种不同的实现,一种针对具有少量值(<= 64)的枚举进行了优化( RegularEnumSet
),另一种针对许多值(称为JumboEnumSet
)进行了优化
发布于 2012-12-10 22:41:23
如果你的类有一个状态(即使是单个实例;单例模式),也要使用构造函数。
仅对java.lang.Math中的实用程序方法使用静态
示例:
public static int max(int a, int b) {
return (a >= b) ? a : b;
}
不会改变对象的任何状态(实例变量),因此可以将其声明为静态。
发布于 2012-12-10 22:40:18
每当需要创建对象的实例时,都必须使用构造函数。
所以,如果你想创建一个Car对象,那么你需要一个构造函数。
关键字static意味着,无需创建实例即可调用您的方法。
https://stackoverflow.com/questions/13803032
复制相似问题