
反射操作泛型
ParameterizedType:表示参数化类型,例如集合 GenericArrayType:表示元素类型是参数化类型或类型变量的数组类型。 TypeVariable:是各种类型变量的公共父接口。 WildcardType:表示通配符类型表达式。
发布日期:2021-05-14 16:20:28
浏览次数:18
分类:精选文章
本文共 1836 字,大约阅读时间需要 6 分钟。
Java反射操作中的泛型类型
Java的泛型机制在编译后会进行类型擦除,这意味着在运行时无法直接获取原始泛型信息。为了通过反射操作这些类型,Java引入了多个反射API:
泛型类型分类
Collection
。代码案例
public class Test10 { public void test01(Mapmap, List list) { System.out.println("test01"); } public Map test02() { System.out.println(test02()); return null; } public static void main(String[] args) throws NoSuchMethodException { Method method = Test10.class.getMethod("test01", Map.class, List.class); Type[] genericParameterTypes = method.getGenericParameterTypes(); for (Type genericParameterType : genericParameterTypes) { if (genericParameterType instanceof ParameterizedType) { Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments(); for (Type typeArgument : actualTypeArguments) { System.out.println(typeArgument); } } } System.out.println("----------"); method = Test10.class.getMethod("test02"); Type genericReturnType = method.getGenericReturnType(); if (genericReturnType instanceof ParameterizedType) { Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments(); for (Type typeArgument : actualTypeArguments) { System.out.println(typeArgument); } } }}
代码解读
获取方法参数的泛型类型:
- 使用
method.getGenericParameterTypes()
获取方法参数的泛型类型数组。 - 遍历每个
Type
对象,如果是ParameterizedType
,则获取其实际类型参数。
获取方法返回值的泛型类型:
- 使用
method.getGenericReturnType()
获取方法返回值的泛型类型。 - 同样检查是否是
ParameterizedType
,并获取实际类型参数。
通过反射操作,可以在运行时获取和操作泛型类型信息,从而实现对泛型数据的安全处理和类型验证。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月11日 05时45分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java位运算,负数的二进制表示形式,int类型最大值为什么是2的31次方-1
2019-03-12
WIFI模块开发教程之W600网络篇3:STA模式下TCP Client通信
2019-03-12
PyQt5快速上手基础篇10-QSettings用法
2019-03-12
JQuery--手风琴,留言板
2019-03-12
vue--搜索,添加,删除小案例
2019-03-12
VUE框架应用包---------微信二维码应用
2019-03-12
(KOA2 step1)利用koa-generator创建KOA2项目
2019-03-12
MFC 自定义消息发送字符串
2019-03-12
goahead 下goaction测试与搭建
2019-03-12
Adding Powers
2019-03-12
不能将 "const char *" 类型的值分配到 "char *" 类型的实体
2019-03-12
PyTorch学习笔记——(6)数据加载Dataset和DataLoader的使用
2019-03-12
ideal 下创建springboot项目
2019-03-12
Linux操作系统的安装与使用
2019-03-12
ajax请求出现/[object%20Object]错误的解决办法
2019-03-12
01背包(小偷的概率)
2019-03-12
流体运动估计光流算法研究
2019-03-12
如何转载博客
2019-03-12
第三方库jieba的安装方法
2019-03-12
在PyCharm切换Python2和Python3
2019-03-12