繁体   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