一、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/n/239726.html