我的代码在Java 5和6中运行良好,但当我升级到Java 7时,出现了“java.lang.ClassCastException:java.lang.Class无法转换为java.lang.reflect.GenericArrayType”的错误。
以下是相关代码:
Java7 打印:
这种不同的行为破坏了我依赖泛型的代码。请有人帮忙理解为什么会发生这种情况,以及如何从
以下是相关代码:
public class A<T> {
public Vector<Integer[]> arr;
}
System.out.println(((ParameterizedType)A.class.getField("arr").getGenericType()).getActualTypeArguments()[0]);
System.out.println(((ParameterizedType) A.class.getField("arr").getGenericType()).getActualTypeArguments()[0].getClass());
Java6 打印:
java.lang.Integer[]
class sun.reflect.generics.reflectiveObjects.GenericArrayTypeImpl
Java7 打印:
class [Ljava.lang.Integer;
class java.lang.Class
这种不同的行为破坏了我依赖泛型的代码。请有人帮忙理解为什么会发生这种情况,以及如何从
Vector<Integer[]> arr
中获取 GenericArrayType?