Java进阶之reflection(反射机制)——通过反射操作泛型,注解

本文详细介绍了Java反射在操作泛型和注解方面的应用,包括ParameterizedType、GenericArrayType、TypeVariable和WildcardType的概念,并提供了代码示例。此外,还讨论了反射性能测试,指出在大量调用情况下,反射可能带来的性能影响及如何通过setAccessible方法优化。
摘要由CSDN通过智能技术生成

上篇文章我介绍了Java反射的基本知识,如果没看过的同学可以去看我的上一篇文章 反射概念与基础 ,今天这篇文章主要介绍一下反射地具体应用实例,分别是通过Java反射操作泛型,和反射操作注解(不了解”注解”的同学可以看我的另一篇文章java注解)。

一、反射操作泛型(Generic)


Java采用泛型擦除机制来引入泛型。Java中的泛型仅仅是给编译器Javac使用的,确保数据的安全性和免去强制类型转换的麻烦。但是编译一旦完成,所有和泛型有关的类型全部被擦除。
  为了通过反射操作这些类型以迎合实际开发的需要,Java新增了ParameterizedType,GenericArrayType,TypeVariableWildcardType几种类型来代表不能被归一到Class类中的类型但是又和原始类型齐名的类型

  • ParameterizedType:表示一种参数化的类型,比如Collection< String >
  • GenericArrayType:表示一种元素类型是参数化类型或者类型变量的数组类型
  • TypeVariable:是各种类型变量的公共父接口
  • WildcardType:代表一种通配符类型表达式,比如?、? extends Number、? super Integer。(wildcard是一个单词:就是”通配符“)

代码示例

package reflection;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;


/**
 * 通过反射
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值