Java架构师学习笔记—java基础—反射、泛型
一、反射
1.1 什么是反射
Class是反射的核心。在运行期创建对象实例。
1.2 Class文件
- 属性
- 方法(构造方法、静态方法、普通方法)
- 包路径
- 类名
…
1.3 创建Class对象的三种方式
(1)类.class
(2)实例.getClass()
(3)Class.forName(“类的全路径”)
1.4 通过Class创建对象
(1)不使用反射
(2)使用反射
1.5 使用反射获取属性值
(1)getField()。只能获取public的,包括从父类继承来的字段。
(2)getDeclaredField()。可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。其要访问private值需要使用setAccessible(true)。
(3)其他通过Field.java获取类信息的方法
1.6 反射实战
通过反射实现一个工具类,可以让一个对象属性相同的值赋值给另一个对象。
二、泛型
2.1 什么是泛型
字面意思:泛指的类型?在编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型,这种就叫做反省,类似于提供一种模板。泛型使得代码简洁,提高程序健壮性,编码期完成,可读性很java反射基础笔记高。
泛型的本质是类型参数化。允许在定义类、接口、方法时使用类型形参,当使用时指定具体类型。所有使用该泛型的地方都被统一化,保证类型一致。如果未指定具体类型,默认是Object类型。集合体系中的所有类都增加了泛型,泛型也主要用于集合。
2.2 泛型的使用
泛型类、泛型接口、泛型方法、派生子类。
2.3 通配符 ?
2.3.1 < ? extends Class> 上限
2.3.2 < ? super Class> 下限
2.4 类型擦除 & 桥接方法
因为jvm不能识别泛型,所以我们编写的泛型只存在于编码期,编译的时候会将泛型自动转换为Object,这就是类型擦除。
一个子类在继承(或实现)一个父类(或接口)的泛型方法时,在子类中明确指定了泛型类型,那么在编译时编译器会自动生成桥接方法。
Method.isBridge()方法来判断一个方法是否是桥接方法。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3248.html