java-javaSE-泛型和反射
泛型
什么是泛型
- 泛型,即“参数化类型”。顾名思义,就是将类型参数化,然后在使用/调用时传入具体的类型(类型实参)。
为什么使用泛型
- 泛型提高程序操作的可读性和安全性。
- 例如集合类型,由于集合在存储对象的时候不会保留其数据类型信息,任何数据类型对象存入集合中时都被当作 Object 类型的数据,当我们从集合中获取元素时,就需要进行强制类型转换。
泛型通配符
List<T>
无限定通配符List<? super T>
T 是类型通配符的下限,List中存储的类型必须是T的父类List<? extends T>
T 是类型通配符的上限,List中存储的类型必须是T的子类
泛型代码和虚拟机
- java 代码在编译时会对泛型进行擦除,并使用其限定类型(无限定的变量用Object)替换。
- 执行流程为:编译器先检查代码中泛型的类型,然后再进行类型擦除,再进行编译。
- 由于编译时擦除了泛型,因此虚拟机中没有泛型。
- 为了保证类型的安全性,会在获取泛型类对象时,插入强制类型转换。
反射
什么是反射
- JAVA反射机制是:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的功能称为反射机制。
反射的使用方式
获取类的字节码Class对象
- 对象.getClass() 由于需要先获取对象,因此会实例化类对象
- 类.class()
- Class.forName(类的全限定名)
通过Class类对象实现实例化
- Class对象.newInstance()
- newInstance()方法内部实际上调用了无参数构造方法。
通过Class类对象可获取的参数
参考博客:
[https://blog.csdn.net/qq_40408443/article/details/123206594]
https://blog.csdn.net/qq_44715943/article/details/120587716
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)