Мой код работает в 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
?