反射
什么是反射
- 反射是 java 提供的一套 API,通过这套 API 能够在运行期间
- 根据类名加载类
- 获取类的各种信息,如类有哪些属性、哪些方法、实现了哪些接口 ...
- 类型参数化,根据类型创建对象
- 方法、属性参数化,以统一的方式来使用方法和属性
- 反射广泛应用于各种框架实现,例如
- Spring 中的 bean 对象创建、依赖注入
- JUnit 单元测试方法的执行
- MyBatis 映射查询结果到 java 对象
- ...
- 反射在带来巨大灵活性的同时也不是没有缺点,那就是反射调用效率会受一定影响
泛型
什么是 Java 泛型
- 泛型的主要目的是实现类型参数化,java 在定义类、定义接口、定义方法时都支持泛型
- 泛型的好处有
- 提供编译时类型检查,避免运行时类型转换错误,提高代码健壮性
- 设计更通用的类型,提高代码通用性
【例如】想设计 List 集合,里面只放一种类型的元素,如果不用泛型,怎么办呢?你必须写很多实现类
- Impl1 实现类中,只放 String
- Impl2 实现类中,只放 Integer
- ...
- 要支持新的元素类型,实现类型也得不断增加,解决方法需要把元素类型作为参数,允许它可变化:List<T>,其中 T 就是泛型参数,它将来即可以是 String,也可以是 Integer ...