在此代码结构中:
public MyClass(Integer... numbers) {
do_something_with(numbers[]);
}
是否可以要求numbers
至少包含一个条目,以便在编译时检查?(当然,在运行时,我可以检查 numbers.length。)
显然我可以这样做:
public MyClass(Integer number, Integer... more_numbers) {
do_something_with(number, more_numbers[]);
}
但这不会很优雅。
我想这样做的原因是确保子类不会简单地忘记调用这个构造函数,这将默认调用super()
列表中没有数字的调用。在这种情况下,我宁愿得到熟悉的错误信息:Implicit super constructor is undefined. Must explicitly invoke another constructor
.
是否有另一种方法可以实现相同的目标,例如一些将这个构造函数标记为非隐式的@-annotation?