如何在没有默认构造函数的情况下创建 class

How to create class with no default constructor

我想创建一个类似于 "android.view.View" 的 class,一个 class 如果在 class 扩展了我的 class,抱歉我的英语不好,有没有人可以帮助我?谢谢

--编辑

@Eran,谢谢,你的评论给了我一个提示,所以罪魁祸首是 Lombok 注释“@Data”,即使我创建一个带参数的构造函数,它也没有给出错误,知道如何用 Lombok 实现这个吗?

这是您的主要 class 模式。

public class MyParentClass {

    MyParentClass(int value) {

    }
}

如果任何 class 想要扩展它而不调用 super(value) 将得到 "There is no default contructor available in parent_class_name"

如下:

public class ChildClass extends MyParentClass {

}

您可以将其设为私有,这样其他 类 就无法使用它。

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 MyClass {
    private MyClass() {
        throw new UnsupportedOperationException();
    }
}