日期:2014-05-20 浏览次数:20802 次
public class Abc { static abstract class AA<T> { static { AA.class.getGenericSuperclass(); System.out.println(1); } } public static void main(String[] args) { new Abc.AA<Integer>() {}; } }
------解决方案--------------------
好吧,懂了!
因为你获取动态的泛型类型的时候,需要你通过获取当前的类信息,而当前的类型信息的获取方法是初始化完类才能得到的吧。
public class Abc { static abstract class AA<T> { { // 动态获取泛型类型 Class clz = (Class) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0]; System.out.println(clz.getName()); } } public static void main(String[] args) { new Abc.AA<Abc>() {}; } }[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]