Java 正确的变量初始化和来自另一个类的调用
我有以下两个例子: 例1:Java 正确的变量初始化和来自另一个类的调用,java,oop,object,Java,Oop,Object,我有以下两个例子: 例1: public class class1{ private classN var1; public class1(param1) { var1 = new classN(param1); //here I initialize var1; } public void setVar1(param1){ this.var1 = new classN(param1) } public clas
public class class1{
private classN var1;
public class1(param1) {
var1 = new classN(param1); //here I initialize var1;
}
public void setVar1(param1){
this.var1 = new classN(param1)
}
public classN getVar1(){
return this.var1;
}
}
public class class2{
private class1 c1;
public class2(param) {
this.c1 = new class1(param);
}
public void handle(){
c1.setVar1(sth);
}
}
例2:
public class class1{
private classN var1; //var1 not initialized inside constructor
public class1() {}
public void setVar1(param1){
this.var1 = new classN(param1);
}
public classN getVar1(){
return this.var1;
}
}
public class class2{
private class1 c1;
public class2() {
this.c1 = new class1();
}
public void handle(){
c1.setVar1(sth);
}
}
我想问两件事:
这两个例子相等吗?
var1是在这两种情况下初始化的,还是在示例2中会出现某种异常?
提前谢谢。两个例子都一样吗
否,在案例-1中,为新的ClassParam;初始化var1;对于非null值,在第二种情况下,var1将为null
不,这两个例子并不相同。在示例1中,变量在构造时初始化,没有它class1无法实例化。在示例2中,该变量未初始化,并被赋予默认值null,直到在稍后的某个时间设置为setVar1
不,你不会得到一个例外。如果在调用handle之前尝试调用getVar1,将得到默认的null值。
你试过测试它们吗?请做;我不认为是。运行它。如果您面临例外情况,请告知我们。当然我们会帮上忙的。我可以找到两个exmaples java.lang.NullPointerException。