你可以把它私人所以其他類不能使用它。
public class MyClass{
private String text;
private int number;
private MyClass(){
this.text="hi";
}
public MyClass(int number){
this();
this.number = number
}
...
}
這樣,子類應使用非默認的構造函數:
public MyChildClass1 extends MyClass{
//NO COMPILE: No default constructor available in MyClass
}
public MyChildClass2 extends MyClass{
public MyChildClass2(){
//NO COMPILE: No default constructor available in MyClass
}
}
public MyChildClass3 extends MyClass{
public MyChildClass3(){
super(); //NO COMPILE: MyClass() has private access
}
}
public MyChildClass4 extends MyClass{
public MyChildClass4(){
super(2); //It Works! (it will initialize number=2 and text="hi")
}
}
創建具有參數的構造函數的類。 – Eran
只需添加一個帶有至少一個參數的構造函數即可。如果你沒有在類中定義任何構造函數,編譯器只會添加一個默認構造函數。 – Jesper
@Eran,謝謝,你的評論給了我一個提示,所以罪魁禍首是Lombok註釋「@Data」,即使我創建一個帶參數的構造函數,也不會出錯,任何想法如何用Lombok實現? – g03r03