我有一个抽象类,它有一个采用可变参数的构造函数。 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/