“不能转换为java.lang.Class”,即:哪个类型不是类

时间:2013-01-29 19:13:08

标签: java introspection

这似乎是一个愚蠢的问题(因为它可能是非常具体的项目)但在这种情况下它足够普遍:

我正在运行一段代码,它给出了ClassCastException,并且我写了标题错误信息。这里提到的演员来自java.lang.reflect.TypeClass<?>类型的对象。

除了原始类型,Java中的哪个类型不是类?

感谢您的回答

2 个答案:

答案 0 :(得分:5)

ClassTypeType不一定是Class,因为Class implements Type

基本上,您的myType也可以是接口GenericArrayTypeParameterizedTypeTypeVariableWildcardType的任何实现类,因为它们都扩展了Type界面。

尝试打印myType.getClass()以查看您的意思类型:您将获得Class<TheSaidType>

答案 1 :(得分:2)

Type的Javadoc可以看出它有许多实现类型。

All Known Subinterfaces:
    GenericArrayType, ParameterizedType, TypeVariable<D>, WildcardType

All Known Implementing Classes:
    Class 

使用内部数据结构类实现子接口。