代码之家  ›  专栏  ›  技术社区  ›  Andrey Vityuk

使用私有静态方法[重复]

  •  34
  • Andrey Vityuk  · 技术社区  · 17 年前

    私有静态方法 ?

    就个人而言,我更喜欢使用 静止的 私有方法 非静态 只要它不需要访问任何实例字段。

    但我听说这种做法违反了OOP原则。

    编辑:我想知道的是风格,而不是性能。

    7 回复  |  直到 17 年前
        1
  •  41
  •   eljenso    17 年前

    A. private static

    有

    class Test
    {
      int field = 123;
    
      private static void accessInstance(Test test)
      {
        System.out.println(test.field);
      }
    }
    

    this 指针)当然是你自己,但你实际上是在模仿实例方法。只是为了完整起见才提到这一点。

        2
  •  21
  •   tyler    17 年前

    (注意,私有静态方法是隐式最终的)

    “由于final方法只在声明类中实现,因此不需要动态地调度对final方法的调用,可以使用静态调用。编译器可以直接调用该方法,完全绕过通常的虚拟方法调用过程。因此,final方法也是i通过实时编译器或类似的优化工具进行nlining。(请记住,私有/静态方法已经是最终方法,因此始终考虑此优化。)

    查看整篇文章: http://renaud.waldura.com/doc/java/final-keyword.shtml

        3
  •  4
  •   Michael Borgwardt    17 年前

        4
  •  2
  •   Eric Petroelje    17 年前

    我并不认为您所做的有任何实际问题,但我的第一个问题是,如果该方法不需要访问任何实例字段,那么它首先在该类中做什么?

        5
  •  0
  •   soulmerge    17 年前

    这是一个品味的问题,但我创建的方法不会对对象静态中的状态做出反应。这样,如果静态函数需要类似的功能,我就不必重写代码。排序函数就是这种情况的一个很好的例子。

        6
  •  0
  •   digitalsanctum    17 年前

        7
  •  0
  •   Lars Lars    17 年前

    例如,私有静态方法可以对其类的私有静态成员进行操作。这可以用来封装和统一特定于类的操作。

    在我看来,使用静态方法的主要缺点是放弃了重写的可能性。因为Java中的类与Smalltalk中的类不同,所以不能重写静态方法。

    我倾向于仅在实用程序类(如java.lang.Math)或类似Singleton模式的模式中使用静态方法。所有这些都需要比private更高的可见性,因为它们代表了类向其他类提供的服务。

    推荐文章