簡體   English   中英

如何在沒有默認構造函數的情況下創建類

[英]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.

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