这是“ Java哲学”一书中的示例(请记住,FancyToy扩展了Toy):
Class<FancyToy> ftClass = FancyToy.class;
Class<? super FancyToy> up = ftClass.getSuperclass(); //compiles
Class<Toy> up = ftClass.getSuperclass(); //doesn't compile
在IDEA中尝试了很多次,只是出现了“不兼容类型”消息。请给我一个提示,为什么我们不能只使用通用类型的Toy?
谢谢
最佳答案
FancyToy的直接超类可能是另一类!
您的第二行内容是:应该是FancyToy扩展的某个类。
而您的第三行则准确说明了需要哪个班级。而且或者Toy和FancyToy之间实际上存在一个层次,或者编译器在这里没有进行必要的类型推断。