Java代码中怎么判断通配符表示的类是否是指定的某个类
时间: 2024-05-02 22:17:32 浏览: 99
在Java中,可以使用反射机制来判断通配符表示的类是否是指定的某个类。具体可以使用以下代码:
```java
public static boolean isClassOfWildcard(Class<?> wildcardClass, Class<?> targetClass) {
Type type = wildcardClass.getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
for (Type actualTypeArgument : actualTypeArguments) {
if (actualTypeArgument instanceof Class) {
Class<?> actualTypeClass = (Class<?>) actualTypeArgument;
if (actualTypeClass == targetClass) {
return true;
}
} else if (actualTypeArgument instanceof WildcardType) {
WildcardType wildcardType = (WildcardType) actualTypeArgument;
Type[] upperBounds = wildcardType.getUpperBounds();
Type[] lowerBounds = wildcardType.getLowerBounds();
if (upperBounds.length > 0) {
Class<?> upperBoundClass = (Class<?>) upperBounds[0];
if (upperBoundClass == targetClass) {
return true;
}
} else if (lowerBounds.length > 0) {
Class<?> lowerBoundClass = (Class<?>) lowerBounds[0];
if (lowerBoundClass == targetClass) {
return true;
}
}
}
}
}
return false;
}
```
其中,wildcardClass 表示通配符表示的类,targetClass 表示目标类。方法中先获取通配符表示的类的父类(即包含通配符的类),然后获取该父类里面实际泛型参数的类型。如果是普通的 Class,则直接比较是否与目标类相同;如果是通配符类型,则获取上下界并比较。如果找到了目标类,则返回 true,否则返回 false。
阅读全文