java-javaSE-泛型和反射
2024-10-21 13:25:22
泛型
什么是泛型
- 泛型,即“参数化类型”。顾名思义,就是将类型参数化,然后在使用/调用时传入具体的类型(类型实参)。
为什么使用泛型
- 泛型提高程序操作的可读性和安全性。
- 例如集合类型,由于集合在存储对象的时候不会保留其数据类型信息,任何数据类型对象存入集合中时都被当作 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
最新文章
- Attention:本博客暂停更新
- Waves – 赞!超炫交互体验的点击动画效果
- 用dbforge调试procedure
- 【原创】TP-LINK +ASUS(Tomato) 双无线路由设置WDS
- saiku 升级&;备份&;恢复
- ADO.NET基础01
- webpack htmlWebpackPlugin 静态资源 版本控制
- LeetCode 笔记22 Distinct Subsequences 动态规划需要冷静
- Java数组运算
- Notepad++编辑Pyhton文件的自动缩进的问题(图文)
- cocos2dx中的用户数据的管理
- 设置DIV隐藏与显示,表格滑动条
- Spring中的一个错误:使用Resources时报错(The annotation @Resources is disallowed for this location)
- Developing your first FNC custom control
- 汽车VIN码识别适用于什么行业
- BiLstm与CRF实现命名实体标注
- Writing Sentences [1]
- 你可能不知道的printf
- DTCC2019第十届中国数据库技术大会将于5月在北京召开
- Flask源码阅读-第三篇(flask\_compat.py)
热门文章
- 遗传算法求TSP问题
- 编程哲学之 C# 篇:005——";Hello,World!";
- spring cloud alibaba - Nacos 作为注册中心基础使用-服务提供者和消费者
- 后台管理系统带关闭的选项卡(多标签页)功能 适配bootstrap3和4 Bootstrap Hover Dropdown
- java并发AQS中应用:以acquire()方法为例来分析线程间的同步与协作
- 关于异常处理的return
- Ubuntu下的FTP Servers搭建与连接
- 滴水2.c++构造 与 继承
- HashSet()相关易错点
- C#后缀表达式解析计算字符串公式