簡體   English   中英

正確的變量初始化和從另一個類調用

[英]Proper variable initialization and call from another class

我在下面有這兩個例子:

示例 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);
    }
}

我想問兩件事:

  1. 兩個例子是否相等?
  2. var1 是否在兩種情況下都被初始化,或者我會在示例 2 中得到某種異常?

先感謝您。

  1. 不,這兩個例子並不相等。 在示例一中,變量在構造時初始化,沒有它就不能實例化class1 在示例 2 中,變量未初始化並被賦予默認值null直到稍后設置setVar1
  2. 不,您不會得到例外。 如果你試圖調用getVar1打電話之前handle ,你會得到默認null值。

兩個例子是否相等?

不,在 -1 的情況下, new class1(param); 初始化var1; (到非空值),在第二種情況下, var1將為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM