我有一个通用接口 (
为什么会这样?如果声明中有任何类型的错误,我该如何强制编译失败?
Pack<A extends PackAnimal>
),其中只有一个返回类型为 List<A>
的方法。今天我发现,如果在实现该接口的类中忘记指定类 (class XXX implements PackAnimal
),则返回类型不会在编译时进行检查,在执行期间会失败。interface PackAnimal {
}
class Buffalo implements PackAnimal {
}
interface LonelyAnimal {
}
class Puma implements LonelyAnimal {
}
interface Pack<A extends PackAnimal> {
List<A> getMembers();
}
class PumaPack implements Pack {
@Override
public List<Puma> getMembers() {
return null;
}
}
为什么会这样?如果声明中有任何类型的错误,我该如何强制编译失败?
Pack<Puma>
。 - 4castle