关于java反射的问题

我就是个菜 发布于 2015/12/03 09:42
阅读 318
收藏 0

需求是这样的,集合对象做为参数传入方法,能不能利用java反射获取集合对象泛型的实际类型

例如:getType(List<T> objectList)

有没有方法获取实际传入参数的泛型T的实际类型?

加载中
0
朱宏青
朱宏青

我很久以前就试过 上结论

如果是子类实现时声明了泛型 是可以拿到的 比如 class StringList extend ArrayList<String> 这样你可以拿到 String.class 这个类型

但是很悲剧的告诉楼主 一般不会有那么无聊去搞实现 都是直接new出来就用 由于本身的类型擦除机制 是拿不到具体的内容的类型的

这里有个取巧的方法 就是如果不是一个空的集合 那么可以尝试拿第一个值的类型作为该集合的类型标示

如果是空的 那就没办法了

2
moyiguke
moyiguke
Object.getClass()就有类型了呀。不需要反射。
水门-kay
水门-kay
+1
1
shijacky
shijacky
public class BaseMysqlDao<T> {

	private Class<T> entityClass;

	@SuppressWarnings("unchecked")
	public BaseMysqlDao() {
		entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
	}

}



0
我是一名程序员
我是一名程序员
遍历list 不就能得到  集合对象的实际类型了吗
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部