为了实现泛型类中的泛型类型的属性值的注入需求,需要获取该泛型类的泛型类型,代码实现如下
publicclassFoo<T>{ privateTt; } publicclassTMain { publicstaticvoidmain(String []args){ Foo<String>foo=newFoo<String>(){}; Typetype= ((ParameterizedType)foo.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; System.out.println(type.getTypeName()); Foo<String>foo2=newFoo<String>(); Typetype2=foo2.getClass().getGenericSuperclass(); System.out.println(type2); } }
上面代码中有两种写法,其中上面那种写法可以输出java.lang.String,下面这种写法输出class java.lang.Object,主要的区别就是定义Foo<T>的时候有没有{},加了{}就能输出确切的类型,否则就是Object,感觉很别扭,不知道有没有其他的写法,或者jdk有其他的声明可以实现该需求。