Java:当 super 的参数是可变参数时,如何要求子类调用 super()

标签 java

我有一个抽象类,它有一个采用可变参数的构造函数。 Java 编译器似乎并不要求子类调用 super(),即使每个构造函数都有参数。

public abstract class Parent {
    public Parent(String... varargs) {

    }
}

public class Child extends Parent {
    // I would like this to be a compile error. Child should always call super().
}

如何编写 Parent 以便子级必须调用 super()

最佳答案

varargs 方法的目的是允许程序员单独编写每个参数,因此可以在前面加上相同类型的必需参数以确保至少传入一个参数。对于具有列表或数组的调用者,替代构造函数可以接受 Iterable

public abstract class Parent2 {
    public Parent2(String firstArg, String... varargs) {

    }

    public Parent2(Iterable<? extends String> args) {

    }
}

public class Child2 extends Parent2 {
    public Child2() {
        super("abc");
    }
}

关于Java:当 super 的参数是可变参数时,如何要求子类调用 super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008309/

相关文章:

c# - 编写需要上传大于 4 gig 的文件的 FTP 客户端是否存在寻址问题?

java - 由 : java. lang.IllegalStateException 引起:应为 BEGIN_ARRAY 但在第 1 行第 2 列为 BEGIN_OBJECT

java - spring boot redis starter 获取错误字符串超出最大允许大小 (512MB)

Java SSL 套接字消息传输,对象还是字节[]?

java - config 在 GenericServlet 中具有私有(private)访问权限

java - 加入一组总超时的线程

java - 限制 Java 中 println() 语句的字符数

java - 切换 fragment 后Android应用程序崩溃

java - (Java) 我的入门冒泡排序的效率

java - 如果我需要可序列化,我应该使用具体列表(例如 ArrayList)还是(可序列化)列表?