您如何看待使用私有静态方法?
就个人而言,我更喜欢使用静态私有方法来进行非静态,只要它不需要访问任何实例字段.
但我听说这种做法违反了OOP原则.
编辑:我想从风格的角度来看,而不是表现.
一个private static
方法本身并不违反OOP本身,但是当你在一个不需要(并且不能*)访问实例字段的类上有很多这些方法时,你就不是以OO方式编程,因为"对象"意味着状态+对该状态的操作一起定义.如果他们不需要任何状态,为什么要将这些方法放在该类上?
(*)=原则上,由于Java中的类级别可见性,类上的静态方法可以访问该类对象的实例字段,例如:
class Test { int field = 123; private static void accessInstance(Test test) { System.out.println(test.field); } }
当然,您需要自己传递对实例(this
指针)的引用,但是您实际上是在模仿实例方法.只是提到这个是完整的.
如上所述,私有静态方法通常用于组织重用逻辑和减少/消除重复代码.我很惊讶我在这次讨论中没有注意到任何表现.来自Renaud Waldura的"决赛中的最后一句话":
(注意,私有静态方法是隐式最终的)
"由于最终方法只在声明类中实现,因此不需要动态调度最终方法的调用,而是可以使用静态调用.编译器可以直接调用该方法,完全绕过通常的方法虚拟方法调用过程.因此,最终方法也可以通过即时编译器或类似的优化工具进行内联.(请记住,私有/静态方法已经是最终的,因此始终考虑进行此优化.)"
查看全文:http: //renaud.waldura.com/doc/java/final-keyword.shtml