这是“ 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之间实际上存在一个层次,或者编译器在这里没有进行必要的类型推断。

10-08 18:13