假设生产中使用的现有代码库包含一个类 A,该类 A 包含一个方法,该方法使用 setter 填充另一个 POJO 类 B 的 N 个字段并将 POJO 返回给调用者,并且假设类 B 的所有实例将仅在以下方面有所不同两个字段,即 N - 2 个字段在 B 类的所有实例中都是相同的,如果 A 类具有对 B 类的静态引用并初始化 B 类的字段在静态中不变初始化块?这样,在每次调用时填充类 B 的 N 个字段的类 A 中的方法现在只需填充两个不同的字段。这也将消除为每次调用类 A 中的方法创建一个类型 B 的新对象的需要。这种方法在多线程应用程序中的含义是什么?
或者,我们可以将 B 类中所有不会更改的字段声明为静态,以便 A 类中的方法仅设置每次调用更改的字段。无论哪种方式,性能提升是否值得,或者这种变化是否符合过早的优化?
例子 :
class A {
private static B b = new B();
static {
b.setSystem("MySystem");
b.setVersion("1.1");
}
public B getB(String name) {
b.setName(name);
return B;
}
}