类的加载器和反射
类的加载器
加载
就是指将class文件读入内存,并为之创建一个Class对象。
任何类被使用时系统都会建立一个Class对象
连接
验证 是否有正确的内部结构,并和其他类协调一致
准备 负责为类的静态成员分配内存,并设置默认初始化值
解析 将类的二进制数据中的符号引用替换为直接引用
初始化
就是我们以前讲过的初始化步骤、
反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
获取class对象的三种方式
1、Class c = new Person(); .getClass();
2、Class c2 = Person.class;
3、Class c3 = Class.forName("Person");
c.getConstructors()获取所有公共构造方法数组
c.getDeclaredConstructors();获取所有构造方法
c.getConstructor(int.class,String.class);获取公共的构造方法对象
Object obj=con.newInstance(12,"小火锅");用通过构造方法对象创建对象
c.getDeclaredConstructor(String.class,int.class);获取私有的构造方法对象
con.setAccessible(true);允许构造器暴力反射
Person p=(Person)c.newInstance();快速创建person对象
c.getMethod("sleep",String.class);获取公共有参 成员方法对象
泛型擦除
擦除泛型原理就是用泛型不进class文件 然后用class对象对集合进行添加操作