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
等都是这么反射的,例如:
如对本文有疑问, 点击进行留言回复!!
集合框架——Map、泛型以及Collection算法常用方法
Elasticsearch 升级 7.x 版本后,我感觉掉坑里了
Mybatis的插件运行原理以及如何编写一个Mybatis的插件
网友评论