[英]How to create class with no default constructor
我想創建一個類似“ android.view.View”的類,該類將顯示“在android.view.View中沒有默認構造函數”錯誤,如果在類中未調用super(...)延長我的課,對不起我的英語不好,有人可以幫助我嗎? 謝謝
- 編輯
@Eran,謝謝,您的評論給了我一個提示,所以罪魁禍首是Lombok注釋“ @Data”,即使我創建了帶參數的構造函數,也不會出錯,任何想法如何使用Lombok來實現?
您可以將其設為私有,以便其他類不能使用它。
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")
}
}
這是您的主班模式。
public class MyParentClass {
MyParentClass(int value) {
}
}
如果任何類想要擴展它而不調用super(value)
將得到“ parent_class_name中沒有默認構造函數”
如下圖所示:
public class ChildClass extends MyParentClass {
}
我只提供私有構造函數:
public class MyClass {
private MyClass() {
throw new UnsupportedOperationException();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.