我有一个Cage类:
public class Cage<T extends Animal> {
Cage(int capacity) throws CageException {
if (capacity > 0) {
this.capacity = capacity;
this.arrayOfAnimals = (T[]) new Animal[capacity];
}
else {
throw new CageException("Cage capacity must be integer greater than zero");
}
}
}
我试图在另一个类main方法中实例化Cage的对象:
private Cage<Animal> animalCage = new Cage<Animal>(4);
我得到错误:“默认构造函数无法处理由隐式超级构造函数抛出的异常类型CageException。必须定义一个显式构造函数。”有任何想法吗? :O(
答案 0 :(得分:4)
这意味着在您的其他类的构造函数中,您正在创建Cage类,但该构造函数未正确处理该异常。
因此,要么在另一个构造函数中创建Cage
类时捕获异常,要么使构造函数抛出CageException
。
答案 1 :(得分:2)
您可以在Cage
实例化的类中使用helper方法:
class CageInstantiator {
private Cage<Animal> animalCage = getCage();
private static Cage<Animal> getCage() {
try {
return new Cage<Animal>(4);
} catch (CageException e) {
// return null; // option
throw new AssertionError("Cage cannot be created");
}
}
}