怎麼獲取泛型T.class類?
阿新 • • 發佈:2018-11-22
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 extendsService<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> voidget1(List<E> list, Class<E> clazz) { getA(clazz); } public void getA(Class<?> clazz) { }
像hibernate
,fastjson
等都是這麼反射的,例如:
List<String> list = JSON.parseArray("['abc','xyz']", String.class); User user = JSON.parseObject("{'name':'tom','age':23,'sex':0}", User.class);