4

我有一个笼子课程:

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");
        }
    }
}

我正在尝试在另一个类主方法中实例化 Cage 的对象:

private Cage<Animal> animalCage = new Cage<Animal>(4);

我收到错误消息:“默认构造函数无法处理隐式超级构造函数抛出的异常类型 CageException。必须定义显式构造函数。” 有任何想法吗?:o(

4

2 回答 2

4

这意味着在您的其他类的构造函数中,您正在创建 Cage 类,但该构造函数没有正确处理异常。

因此,要么在另一个构造函数中创建类时捕获异常Cage,要么使构造函数 throws CageException

于 2013-06-06T02:23:26.343 回答
2

Cage您可以在实例化的类中使用辅助方法:

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");
        }
    }
}
于 2013-06-06T02:31:14.730 回答