我试图获得一个条件,以评估为假。我有一个字段,它是我通过查看declaredFields获得的地图。 Map参数化类型type是什么会导致条件为假?

// field is a Map from a class using reflection (declaredFields)
Type type = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[i]
if (type instanceof Class) {
    everthingsAClass()
} else {
    whatIsntAClass()
}

最佳答案

除了Class之外,还有许多非公共类可以间接实现Type

例如,sun.reflect.generics.reflectiveObjects.TypeVariableImpl实现TypeVariable,它是扩展Type的接口。

其他示例包括GenericArrayTypeImplParameterizedTypeImplWildcardTypeImpl

这些类的实例可以通过各种反射API方法(例如getGenericInterfacesgetGenericSuperclassClass方法)返回。

10-06 07:42