泛型与反射
1、泛型
1、编译时干的事,用具体的类型代替泛化的类型。
2、和类的创建没关系,就是相当于存在类里的一个信息(或者说一个属性)。
3、有的泛型声明在类上,有的泛型声明在方法上,作用域不同。
4、在继承的时候使用泛型有两种方式:
- 要么在子类中也声明泛型,
public class Generic<T> extends A<T>
- 要么在子类中将泛型写成具体类型,
public class Generic extends A<具体类型>
(在继承中使用泛型的意义是:在子类中才使类型得到具体化,使父类的代码更加通用)
5、A<T>
应该如何理解(可以理解成:这里的<T>
不是区分类型的,而是区分实例的):
6、A<user>
和A<book>
是一个类(类型擦除),不过Spring的“泛型依赖注入”(@Autowire)可以根部泛型的不同的具体类型实现不同的注入。A<user>
调用A<user>
的方法,A<book>
调用A<book>
的方法。
2、反射
运行时干的事,
- 对于任意一个类,知道这个类有哪些属性和方法
- 对于任意一个对象,调用它的任意一个方法
Java反射机制主要提供了以下功能:
* 1.在运行时判断任意一个对象所属的类。
* 2.在运行时构造任意一个类的对象。
* 3.在运行时判断任意一个类所具有的成员变量和方法。
* 4.在运行时调用任意一个对象的方法。