日期:2014-05-20 浏览次数:21063 次
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]