[英]what is this() ? can it have multiple parameters?
我遇到了一個代碼,其中java中的this()方法采用三個參數,兩個是整數,第三個是布爾值。 這到底是什么意思呢 ? this()方法還有其他變體嗎? 赫拉是實際的代碼。
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false);
}
謝謝..
這意味着當前類中還有另一個具有該簽名的構造函數。
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
方法只是從另一個構造函數中調用類的一個構造函數的一種方法,以幫助避免代碼重復。 只能在構造函數的第一行上調用它-決不能在任何其他方法中調用它。
this
只是調用另一個構造函數來運行。 因此,尋找具有該簽名的其他構造函數。
如前所述,這將調用另一個構造函數,主要是作為一種便捷方法。
瑣碎的例子:
class A {
private int value;
public A(int val) {
value = val;
}
public A() {
this(0); //0 as default
}
}
通常,當最具體的構造函數(具有最多參數的那個構造函數)不只是賦值而是包含更多您不想重復/復制的邏輯時,您確實會使用對this()的調用。
僅僅因為它適合這里: super()
也可以有參數,即,它使用子類的構造函數中的參數調用超類的構造函數。
這是一個構造函數調用。 如果您的類使用不同數量的參數實現不同的構造函數,則可以像這樣鏈接您的構造函數:
class A {
public A(boolean arg) {
...
}
public A() {
this(false); // invokes the constructor with the boolean argument
}
}
有時,創建帶有不同參數的私有構造函數並為公共和/或受保護的構造函數提供其他/更少的參數並將對象構造委托給該私有構造函數是有意義的。
重要的是要知道在調用this(...)之前不能放置其他代碼。 但是,在調用this(...)之后,您可以執行任何其他構造函數中可以做的所有事情。
編輯:由於this(...)調用構造函數,因此只能從其他構造函數(屬於同一類)中調用它。
class MyClass {private int var1; private int var2; 私有布爾標志;
公共MyClass(int var1_,int var2_){this(var1_,var2_,false); }
公共MyClass(int var1_,int var2_,boolean flag_){var1 = var1_; var2 = var2_; 標志= flag_; }
public String toString(){return(new Boolean(flag).toString()); }
公共靜態無效main(String [] args){MyClass my = new MyClass(5,6); System.out.println(my); }
}
這樣就行了。
this()不是方法,而是一個保留關鍵字,指向同一類的重載構造函數。 您傳遞的參數數量應指向該類中定義的現有對應構造函數。
super()也具有語義,但是構造函數是在其父層次結構之一中定義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.