泛型

什么是泛型

  • 泛型,即“参数化类型”。顾名思义,就是将类型参数化,然后在使用/调用时传入具体的类型(类型实参)。

为什么使用泛型

  • 泛型提高程序操作的可读性和安全性。
  • 例如集合类型,由于集合在存储对象的时候不会保留其数据类型信息,任何数据类型对象存入集合中时都被当作 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

最新文章

  1. Attention:本博客暂停更新
  2. Waves – 赞!超炫交互体验的点击动画效果
  3. 用dbforge调试procedure
  4. 【原创】TP-LINK +ASUS(Tomato) 双无线路由设置WDS
  5. saiku 升级&amp;备份&amp;恢复
  6. ADO.NET基础01
  7. webpack htmlWebpackPlugin 静态资源 版本控制
  8. LeetCode 笔记22 Distinct Subsequences 动态规划需要冷静
  9. Java数组运算
  10. Notepad++编辑Pyhton文件的自动缩进的问题(图文)
  11. cocos2dx中的用户数据的管理
  12. 设置DIV隐藏与显示,表格滑动条
  13. Spring中的一个错误:使用Resources时报错(The annotation @Resources is disallowed for this location)
  14. Developing your first FNC custom control
  15. 汽车VIN码识别适用于什么行业
  16. BiLstm与CRF实现命名实体标注
  17. Writing Sentences [1]
  18. 你可能不知道的printf
  19. DTCC2019第十届中国数据库技术大会将于5月在北京召开
  20. Flask源码阅读-第三篇(flask\_compat.py)

热门文章

  1. 遗传算法求TSP问题
  2. 编程哲学之 C# 篇:005——&quot;Hello,World!&quot;
  3. spring cloud alibaba - Nacos 作为注册中心基础使用-服务提供者和消费者
  4. 后台管理系统带关闭的选项卡(多标签页)功能 适配bootstrap3和4 Bootstrap Hover Dropdown
  5. java并发AQS中应用:以acquire()方法为例来分析线程间的同步与协作
  6. 关于异常处理的return
  7. Ubuntu下的FTP Servers搭建与连接
  8. 滴水2.c++构造 与 继承
  9. HashSet()相关易错点
  10. C#后缀表达式解析计算字符串公式