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