Java中获取泛型对象中的类型
在方法调用的时候,有时候需要传一个Class<T>泛型过来。
但是,有时候,传过来的Class又是泛型。
比如下面代码
List<User>
这时,传过去的只能是
List.class
此时就达不到我们想要的类型,List<User>的效果。
在这里只要实现一个类就可以获取到List<User>
public class DefaultTargetType<T> { private Type type; private Class<T> classType; @SuppressWarnings("unchecked") public DefaultTargetType() { Type superClass = getClass().getGenericSuperclass(); this.type = ((ParameterizedType) superClass).getActualTypeArguments()[0]; if (this.type instanceof ParameterizedType) { this.classType = (Class<T>) ((ParameterizedType) this.type).getRawType(); } else { this.classType = (Class<T>) this.type; } } }
结果:
Class<List<User>> classType = new DefaultTargetType<List<User>>() {}.getClassType();
就可以获取到泛型中的类型了。
作者:Se7end
声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接。