大型功能应该在什么时候保持静态?

时间:2014-02-23 03:03:44

标签: java performance optimization

当函数变得中等大时,我通常将其更改为静态。例如,如果类toString()变得非常大,我通常会将其更改为

public String toString()  {
   return  ClassName.toString(this);
}

private static final String toString(ClassName c_n)  {
    //.........
}

如果功能不是太大,那么执行此操作是否过度?


修改

我在这里被大肆击倒。 :)

我理解一般应该如何使用静态修饰符(对于单例,对于与特定实例无关的内容,对于实用程序函数)。我是从优化的角度来问这个问题:为了避免大型函数的字节代码在内存中复制,对于每个类的实例。我显然错了它的工作原理。

3 个答案:

答案 0 :(得分:5)

根据函数的长度使函数静态是完全错误的。静态变量/方法属于类,而不属于实例。

因此,如果实例之间存在共同的功能,而不依赖于任何实例,则它们可以是静态的。

在这里,您已将toString()设为静态。但是,这种方法应该描述一个实例。将其设为静态将导致容易出错的结果。

调用此方法是否有意义,即使尚未构造任何对象?“如果是这样,它肯定是静态的。否则,应该是实例方法

答案 1 :(得分:3)

如果方法不依赖于声明它的类的实例,则应该创建方法static 。它与函数的长度无关。

答案 2 :(得分:0)

每个实例不复制代码(方法),它不需要,因为它对所有实例都是相同的,并且不会被修改。

仅复制实例数据(属性)。