public <T> void get(List<T> list){ getA(T.class); //报错,不能调用T.class } public void getA(Class<?> class){ }
如上代码,要调用getA()方法,必须传入一个Class类,使用泛型怎么传递这个Class类呢?
在java里泛型操作还是很麻烦的。
例如这种:
class Service<K, V> { // 此处的K,V都可以获取 // 多个的时候也一样 } class StringService extends Service<String, Integer> { }
但是你直接写在方法上的这种是没办法获取的。
public <T> void get(List<T> list){ getA(T.class); //报错,不能调用T.class }
建议你改成如下方式:
public <E> E get(List<E> list, Class<E> clazz) { getA(clazz); return null; } public <E> void get1(List<E> list, Class<E> clazz) { getA(clazz); } public void getA(Class<?> clazz) { }
像hibernate,fastjson等都是这么反射的,例如:
Java泛型与Class参数
本文探讨了Java中泛型的使用与限制,特别是在方法中如何正确传递Class参数。通过对比不同场景下泛型的表现,文章提供了实用的解决方案,并举例说明了如何在实际项目如Hibernate和FastJSON中应用反射。
569

被折叠的 条评论
为什么被折叠?



