单例类中的Java静态方法

时间:2016-03-29 11:46:36

标签: java performance static-methods

哪一个更好? 我有一个单例类,它在我的应用程序启动时被初始化,我有一个抽象的Util类。我应该在抽象的Util类中使用单例类或静态方法创建局部方法吗?哪一个更有效率,为什么?注意:该方法不会改变实例变量的状态

Eclipse建议我的许多单例类本地方法可以声明为static。在这种情况下哪个更好?

4 个答案:

答案 0 :(得分:2)

你不应该根据表现做出这种决定。性能方面的任何差异都将由编译器或JVM优化/修复。

相反,想一想什么是合乎逻辑的。让代码对局外人有意义。它只是启动方法吗?它可能应该进入单例实例。这是一个更普遍的实用的东西吗?把它放在实用程序类中。

答案 1 :(得分:1)

你应该以这样的方式构建你的应用程序,使你不必首先关心这些事情。 static中的abstract方法毫无意义。理想情况下,你使用I.o.C.容器,或者,如果您只想使用单例,则通过构造函数参数或setter传播实例,因为您可以保持依赖关系图清洁。

知道你使用单身人士的班级越少越好。

答案 2 :(得分:0)

正如其他人已经说过的那样:这取决于。

据我所知,你说的是一个纯实用的方法(比如Collections.sort)。在这种情况下,因为您实际上不需要对象,所以将其设置为静态。 (一般来说:尽量避免使用仅仅是函数集合的无用对象 - 在这种情况下转为静态。)

如果它是依赖于给定(单例)对象的函数,它应该去那里。

答案 3 :(得分:0)

如果您不打算在方法中更改实例变量,可以使用静态函数,这样可以更好地实现常用的函数,例如数学函数等。否则我更喜欢使用单例方法而非静态方法,原因如下

  1. 您可以实现继承。
  2. 最近可以初始化它,不像静态方法,一旦加载就会立即初始化。
  3. 你可以释放单身类使用的内存。
  4. 您可以覆盖该方法。