我最近一直在查看我在 Eclipse 中的警告并遇到了这个:
如果方法可以声明为静态,它会给出编译器警告。
[编辑] Eclipse 帮助中的准确引用,强调私有(private)和最终:
When enabled, the compiler will issue an error or a warning for methods which are private or final and which refer only to static members.
是的,我知道我可以关闭它,但我想知道打开它的原因吗?
为什么将所有可能的方法都声明为静态方法是件好事?
这会带来任何性能优势吗? (在移动域中)
指出一个方法是静态的,我想这表明您不使用任何实例变量,因此可以将其移至 utils 样式类?
在一天结束时,我应该将其关闭“忽略”,还是应该修复它给我的 100 多个警告?
你认为这只是脏代码的额外关键字,因为编译器无论如何都会内联这些方法? (有点像你没有声明每个变量都可以最终但你可以)。
最佳答案
每当你编写一个方法时,你就在一个给定的范围内履行了一个契约。范围越窄,你写错误的机会就越小。
当一个方法是静态的,你不能访问非静态成员;因此,您的范围更窄。因此,如果您不需要并且永远不需要(即使在子类中) 非静态成员来履行您的契约(Contract),为什么要让您的方法访问这些字段?在这种情况下声明方法 static
将使编译器检查您是否使用了您不打算使用的成员。
此外,它将帮助阅读您的代码的人了解契约(Contract)的性质。
这就是为什么在实际实现静态合约时声明方法 static
被认为是好的原因。
在某些情况下,您的方法仅表示与您的类的实例相关的东西,而且它的实现实际上并没有使用任何非静态字段或实例。在这种情况下,您不会标记方法 static
。
不使用 static
关键字的示例:
- 一个什么都不做的扩展钩子(Hook)(但可以对子类中的实例数据做一些事情)
- 一种非常简单的默认行为,可以在子类中自定义。
- 事件处理程序实现:实现将随事件处理程序的类而异,但不会使用事件处理程序实例的任何属性。
关于java - 将方法声明为静态有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11240178/