如果我们尝试初始化在方法内的类级别声明的引用,我想知道任何级别的差异或影响。为什么我们要在类级别进行引用并在方法范围内初始化它。
第二个问题:useBox2
怎么样请提供技术理由帮助
public class S {
private MyBox b;
public void useBox()
{
b = getBox()
b.abc();
}
public synchronized void useBox2(){
b = newBox();
}
private Box getBox()
{
return new MyBox()
}
}
答案 0 :(得分:0)
您所指的可能是lazy initialization
,包括仅在需要时初始化对象,以(例如)更好地管理内存分配。
使用syncronized
关键字将影响不同线程访问方法的方式。作为一个类属性,它的“值”将在所有线程中共享。
答案 1 :(得分:0)
这个问题的设计有问题。
NullPointerException
个案例。我真的不喜欢对每个可能的代码行进行空检查。我认为上述条件会使代码紧密耦合,并会导致更多问题。我在质疑为什么这个对象是一个类变量,如果在初始化实际对象时不需要它。
另见