2011-03-03 22 views
0

我遇到了一個代碼,其中java中的this()方法接受三個參數兩個是整數,第三個參數是布爾值。 究竟是什麼意思?這個()方法有其他變體嗎? 赫拉是實際的代碼。這是什麼()?它可以有多個參數?

public SegmentConstructor(int seqNum_, int length_) { 
     this(seqNum_, length_, false); 
    } 

謝謝。

回答

10

這意味着有在具有該簽名當前類的另一個構造函數。

public SegmentConstructor(int seqNum_, int length_) { 
    this(seqNum_, length_, false); // calls the constructor below. 
} 

public SegmentConstructor(int seqNum_, int length_, boolean required_) { 
    seqNum = seqNum_; 
    length = length_; 
    required = required_; 
} 

this方法只是一個方法來調用類的構造函數之一從另一個構造函數中,以幫助避免代碼重複。它只能在構造函數的第一行調用 - 絕不能在其他方法中調用。

+0

哦!感謝您的快速回復......我現在明白了......所以這(int,int,bool)調用其他類似參數的構造函數......非常感謝您。 – KoneruDattu 2011-03-03 18:52:05

2

this只是調用另一個構造函數來運行。因此,查找具有該簽名的其他構造函數。

+0

謝謝。已將其配置。 – KoneruDattu 2011-03-03 18:54:02

0

這是一個構造函數調用。如果你的類有不同數量的參數,實現不同的構造函數,你可以鏈接你的構造是這樣的:

class A { 
    public A(boolean arg) { 
     ... 
    } 

    public A() { 
     this(false); // invokes the constructor with the boolean argument 
    } 
} 

有時是有意義的創建一個私有的構造函數採取不同的參數,並提供與其他公共和/或受保護的構造函數/更少的參數並將該對象構造委託給該私有構造函數。

重要的是要知道,在調用此(...)之前,不能放置其他代碼。然而,在調用這個(...)後,你可以在任何其他構造函數中做所有事情。

編輯:由於此(...)調用構造函數,因此只能從其他構造函數中調用(屬於同一個類)。

1

如前所述,這調用了另一個構造函數,主要作爲一種方便的方法。

簡單的例子:

class A { 
private int value; 

public A(int val) { 
    value = val; 
} 

public A() { 
    this(0); //0 as default 
} 
} 

通常你使用這個),電話(時最具體的構造函數(即一個最參數)不僅是分配,但包含您不想讓更多的邏輯重複/複製等。

只是因爲它適合在這裏:super()也可以有參數,也就是說,它調用超類的構造函數與來自子類的構造函數的參數。

+0

+1:關於應該如何使用以及'超級'關鍵字的好評。 – StriplingWarrior 2011-03-03 19:15:14

0

class MyClass { private int var1; private int var2; 私有布爾標誌;

public MyClass(int var1_,int var2_) this(var1_,var2_,false); }

公共MyClass的(INT var1_,INT var2_,布爾flag_) { VAR1 = var1_; var2 = var2_; flag = flag_; }

public String toString() return(new Boolean(flag).toString()); }

public static void main(String [] args) MyClass my = new MyClass(5,6); System.out.println(my); }

}

所以它的工作原理。

+0

如果您將代碼縮進四個空格,它將被格式化爲StackOverflow的代碼。 – StriplingWarrior 2011-03-03 19:12:59

0

this()不是一種方法,而是一個保留關鍵字,指向同一類的重載構造函數。 您傳遞的參數數量應指向該類中定義的現有對應構造函數。

super()也具有語義,但構造函數是在其父層次結構中定義的。

相關問題