类型信息就是类的信息,java文本文件在经过编译后就会生成一个.class的二进制文件;
java文件与.class文件是一对多的关系;
事实上,每个java类文件都会有一个public staticfinal .class 的属性,是Class类(泛型类来的)的实例,用来记录类型信息的;
引用static final XX 的静态常量是不会加载对应的类的,new是加载类的标志;
用类加载器加载类;
加载子类时,父类也会被加载;
Constructor是专门用来描述构造函数的类;
Method是专门用来描述方法的类;
native方法是用来调用非java语言的接口;
Field是专门用来描述类属性的类;
类型信息的一个应用是----在程序运行时判断对象和类的信息;
判断方式:AA instanceof BBAA是不是BB类的实例;
Class里有一个方法,isInstance(),用于判断某个对象是不是这个类的实例;
类型信息另一个重要应用----反射,说白了,就是在程序运行时,对于任意一个类,都可以知道它的属性和方法是什么,对于任意一个对象,都能调用它的任意方法和修改它的属性;
反射的目的是,在一个类名或者对象名的列表配置文件中动态选取的类或对象,可以用来构造对象或者调用方法(forName,Class.newInstance无参/Constructor.newInstance有参,Method.invoke,Field.set,XX.setAccessible);
代理类:将方法进行封装,添加一些额外的,不属于该方法去执行的操作。
泛型的目的是提高代码的利用率;
?代表通配符,等于是泛型变量;
泛型边界,就是用extends和super去修饰泛型,使泛型有了约束的继承关系。