小编Rav*_*i M的帖子

由于缺少GenericArrayType而从Java6升级到Java7时出现ClassCastException

我的代码在Java 5和6中运行,但是当我升级到Java 7时,我得到一个"java.lang.ClassCastException:java.lang.Class不能转换为java.lang.reflect.GenericArrayType".

对于以下代码:

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());
Run Code Online (Sandbox Code Playgroud)

Java6打印:

java.lang.Integer[]
class sun.reflect.generics.reflectiveObjects.GenericArrayTypeImpl
Run Code Online (Sandbox Code Playgroud)

Java7打印:

class [Ljava.lang.Integer;
class java.lang.Class
Run Code Online (Sandbox Code Playgroud)

这种不同的行为破坏了我依赖于泛型的代码.是否有人可以帮助我理解为什么会这样,以及如何获得GenericArrayTypeVector<Integer[]> arr

java generics java-7

8
推荐指数
1
解决办法
999
查看次数

标签 统计

generics ×1

java ×1

java-7 ×1