Java静态方法的标准?

时间:2012-01-11 08:14:37

标签: java methods static

有人告诉我:

  

如果您正在使用Eclipse并且在方法中没有看到任何蓝色字(即成员变量),那么这些方法应该是静态方法,只要参数(如果有的话)是原始类型,或者(在对象引用的情况下)是不可变的和/或线程安全的。

在决定实例方法是否真的应该是静态方法时,Java开发人员是否应该考虑其他任何标准?

4 个答案:

答案 0 :(得分:11)

简单地说,如果它是纯粹的“助手/函数”,它不会修改对象的内部状态,那么它就是静态方法的理想选择。

答案 1 :(得分:6)

...除非您打算继承并覆盖该方法。

  

只要参数(如果有的话)是原始类型,或者(在对象引用的情况下)是不可变的和/或线程安全的。

我不明白为什么这是相关的。无论是否使方法静态,任何线程安全注意事项都是完全相同的。只有不可变参数的静态方法(也不会弄乱类的静态字段)是线程安全的。如果参数不是不可变的并且方法改变它们并且这变得非线程安全,那么使这个实例方法根本无济于事。

答案 2 :(得分:1)

如果您不需要对象的实例来调用该方法,那么它应该是静态的。即:如果您只使用参数而没有对象的成员。通常那些是从未实例化的实用程序或辅助类中收集的(通过声明私有默认构造函数来保护)。

ps:关于“蓝字”:您应该始终使用this.来访问成员变量而不依赖于IDE,因为一旦您使用简单的查看器/编辑器,代码变得非常难以理解。

答案 3 :(得分:0)

您打算以全局方式为所有实例使用的任何功能都可以是静态的

相关问题