Java:无法理解class类方法newInstance()和getSuperClass()的工作方式

时间:2019-11-01 18:23:37

标签: java

以下是“ Java哲学”一书中的示例(请记住,FancyToy扩展了Toy):

Class<FancyToy> ftClass = FancyToy.class;
Class<? super FancyToy> up = ftClass.getSuperclass(); //compiles
Class<Toy> up = ftClass.getSuperclass(); //doesn't compile 

在IDEA中尝试了很多次,只是出现了“不兼容类型”消息。请给我一个提示,为什么我们不能仅使用通用类型的玩具

谢谢

1 个答案:

答案 0 :(得分:1)

FancyToy的直接超类可能是另一个类!

您的第二行说:FancyToy扩展它应该是 some 类。

第三行准确地说明了需要哪个班级。而且或者Toy和FancyToy之间实际上存在一个层次,或者编译器在这里没有进行必要的类型推断。