首页 > 解决方案 > Java:无法理解 newInstance() 和 getSuperClass() 类的方法是如何工作的

问题描述

这是“Java Philosophy”一书中的示例(请记住 FancyToy 扩展了 Toy):

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

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

谢谢

标签: java

解决方案


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

你的第二行说:它应该是FancyToy 扩展的某个类。

而您的第三行确切地说明了需要哪个类。要么在 Toy 和 FancyToy 之间实际上存在一个级别,要么编译器没有在此处进行必要的类型推断。


推荐阅读