一、TypeReference概述
TypeReference是Java程序語言中的一個類,該類表示對泛型類型的引用,是泛型指定類型的根接口之一。TypeReference類幫助Java模板解析器獲取泛型參數類型。
常用的泛型類型有List、Set、Map等等,對於這些類型,我們往往會在聲明時帶上類型參數,例如List list = new ArrayList();
而建立泛型參數實例時,需要獲取泛型參數的類型,這就是TypeReference類所乾的事情。
二、TypeReference的主要方法
1、
getType()
getType()方法是TypeReference類中最主要的方法之一。它可以通過泛型參數位於當前類上的父類或實現的接口,獲取泛型參數的實際類型。
下面是一個使用getType()方法的例子:
public class UserServiceImpl extends BaseServiceImpl implements UserService {
}
public class BaseServiceImpl implements BaseService {
public BaseServiceImpl() {
Class entityClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}
public interface BaseService {
}
public interface UserService extends BaseService {
}
在上面的例子中,UserServiceImpl類擴展了泛型參數類型為User的BaseServiceImpl類,並且實現了泛型參數類型為User的接口UserService。
在BaseServiceImpl類的構造函數中,我們使用了getType()方法獲取泛型參數實際的Class對象。
2、
getParameterizedType()
getParameterizedType()方法可以獲取泛型參數的參數化類型。下面是一個例子:
public class UserServiceImpl extends BaseServiceImpl implements UserService {
}
public class BaseServiceImpl implements BaseService {
public BaseServiceImpl() {
Type[] parameterizedType = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments();
}
}
public interface BaseService {
}
public interface UserService extends BaseService {
}
在上面的例子中,BaseServiceImpl類的構造函數中,我們使用了getParameterizedType()方法獲取泛型參數的參數化類型。
三、小結
對於Java開發人員來說,TypeReference類是一個不可或缺的工具,幫助我們解釋泛型類型參數。
通過getType()方法和getParameterizedType()方法,我們可以很方便地獲取泛型參數實際的Class對象和參數化類型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/239726.html
微信掃一掃
支付寶掃一掃