反射获取泛类型实际类型问题

Yun__ 2019-03-18 05:31:21

@Data
public class Response<T> {

protected List<T> results;

}

我定义了这个类

然后我想将每个字段的类型和名称反射出来

现在在List<T> 的时候,只能得出实际类型是T,却不能反射出我定义的类型
这是为什么?



for (Field field : fieldList) {


Type genericSuperclass = field.getGenericType();
if (genericSuperclass instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) genericSuperclass;
Type[] actualTypeArguments = pt.getActualTypeArguments();
if (actualTypeArguments.length > 0) {
for (Type arg : actualTypeArguments) {
String name =arg.getTypeName();
Integer c = 1;
}
}

}


}

...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏虫EG 2019-03-26
  • 打赏
  • 举报
回复
哈哈,我也遇到了这个问题,本来用泛型能简化代码,无奈部分逻辑需要针对不同的类型特殊处理,在网上查了半天,包括国外网站都没找到答案,好在代码不多,只好写一些重复代码了
Yun__ 2019-03-25
  • 打赏
  • 举报
回复
好像是没有好的办法,最终使用注解强行解决了. 因为运行时直接反射会拿到T类型是object,完全无法获得我的期望 所以使用注解做了一个class的map,使用时进行查询
木子的木木 2019-03-21
  • 打赏
  • 举报
回复
你说的是泛型擦除?T被运行时被擦除为Object类型
abckingaa 2019-03-21
  • 打赏
  • 举报
回复
可以参考下ORM Bee架构.
开源有源码: http://gitee.com/automvc/bee
kang5789 2019-03-19
  • 打赏
  • 举报
回复
Field[] fields = cls.getDeclaredFields(); 参考https://blog.csdn.net/kang5789/article/details/52858289

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧