首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java构造函数和静态方法

Java构造函数和静态方法
EN

Stack Overflow用户
提问于 2012-12-10 22:35:43
回答 5查看 19.9K关注 0票数 18

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

你能用小片段来解释上面的内容吗?我浏览了一些线索,但我仍然不清楚这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-10 22:37:42

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

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

代码语言:javascript
复制
public String toString() {
    StringBuilder sb = new StringBuilder();
    // append fields to the sb
    return sb.toString();
}

当你可能想要重用对象(特别是如果是不可变的),你可能想要返回子类,或者你想要描述结构时,可以使用静态因子方法。一个很好的例子是EnumSet,它有许多静态工厂,它们做不同的事情,即使有些工厂有相同的参数。

代码语言:javascript
复制
EnumSet.noneOf(RetentionPolicy.class);
// has the same arguments, but is not the same as
EnumSet.allOf(RetentionPolicy.class);

在这种情况下,使用静态工厂可以清楚地看到这两种构造set的方式之间的区别。

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

票数 19
EN

Stack Overflow用户

发布于 2012-12-10 22:41:23

如果你的类有一个状态(即使是单个实例;单例模式),也要使用构造函数。

仅对java.lang.Math中的实用程序方法使用静态

示例:

代码语言:javascript
复制
public static int max(int a, int b) {
    return (a >= b) ? a : b;
}

不会改变对象的任何状态(实例变量),因此可以将其声明为静态。

票数 8
EN

Stack Overflow用户

发布于 2012-12-10 22:40:18

每当需要创建对象的实例时,都必须使用构造函数。

所以,如果你想创建一个Car对象,那么你需要一个构造函数。

关键字static意味着,无需创建实例即可调用您的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13803032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档