所以我的问题是我有一个类和它的子类。
->类kassenbon->类kassenbonverbessert扩展kassenbon
在我的“kassenbon”类中,我有一个构造函数:
public Kassenbon(int max) {
produkte = new String[max];
preise = new Integer[max];
}
然后我的子类的构造函数如下所示:
public KassenbonVerbessert(int max) {
super(max);
}
我现在的问题是,我想检查参数max,如果它是负数,那么我想抛出一个异常,因为这意味着构造函数将创建两个长度为负的数组,这是不可能的。但是我怎么做仅仅因为超级调用必须是构造函数中的第一个语句,对吗?!但如何实现:
if(max < 0){
throw new IllegalArgumentException("Error");
}
4条答案
按热度按时间uwopmtnx1#
当您无法将检查应用于父构造函数时,您必须内联检查,如这里和这里所建议的。但你不必为此编写自己的方法,你可以
java.util.Objects.checkIndex()
为此目的:第二个参数是
max
,如果你也想提供一个上边界…当然,您可以为该方法添加静态导入:
import static java.util.Objects.checkIndex;
.mrphzbgm2#
首先,这张支票在未来看起来更有意义
Kassenbon
建造师。但如果不想这样做,可以内联方法调用来检查参数:xhv8bpkk3#
你不必强迫把支票放在儿童班。您可以直接将检查放入父类的构造函数中。
sz81bmfz4#
除了@khelwood所说的之外,还可以使用工厂方法强制创建类。通常,当对象的创建变得更加复杂时(特别是在检查和异常方面),您可以开始使用以下方法:
和
使用方法: