ClassCastException при обновлении с Java6 до Java7 из-за отсутствия GenericArrayType

Мой код работает в Java 5 и 6, но когда я обновился до Java 7, я получаю «java.lang.ClassCastException :java.lang.Class не может быть приведен к java.lang.reflect.GenericArrayType».

Для следующего кода:

public class A {
  public Vector 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

Это другое поведение нарушает мой код, основанный на дженериках. Может кто-нибудь помочь мне понять, почему это происходит и как получить GenericArrayType из Vector arr?

8
задан Ravi M 27 July 2012 в 13:03
поделиться