我有以下两个例子:
示例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 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);
}
}
我想问两件事:
提前谢谢。
答案 0 :(得分:1)
class1
在没有它的情况下不能被实例化。在示例2中,变量未初始化,并且默认值为null
,直到稍后设置setVar1
getVar1
之前尝试拨打handle
,则会获得默认的null
值。答案 1 :(得分:-1)
两个示例是否相同?
不,如果是-1,则new class1(param);
初始化var1;
(为非空值),在第二种情况下,var1
将为null
。