// 这句代码获取不到泛型class new Test总结:().getTClass(); // 这句代码可以获取到泛型class,因为是匿名内部类,本质也算继承了 new Test (){}.getTClass() // 这句代码正常获取泛型class,因为在继承的情况下是可以的 new TestImpl().getTClass(); public class Test { public Class getTClass() { return (Class ) ((ParameterizedType) Test.this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; } } public class TestImpl extends Test { }
这样new Test
只有继承一下在获取才能获取到泛型Class,例如上面的TestImpl示例。
虽然new Test
有没有想起来Gson就是这样做的?因为Gson家喻户晓,所以大家都记住了。
new Gson().fromJson("json",new TypeToken>(){}.getType());
如果想解决new Test
public class TestNew{ Class clazz; public TestNew(Class clazz) { this.clazz = clazz; } public Class getTClass() { return clazz; } } Class> clazz3 = new TestNew (String.class).getTClass(); Log.e("clazz 3", clazz3.toString());



