一.
反射:实例化对象--------------getClass()方法-----------------得到完整的“包类”名称
反射之后Person的操作
反射的使用
1.Class clazz=Person.class
2.调用构造器函数/属性/方法
3.构造器实例化,强转/属性设置/方法调用
二 关于java.lang.Class类的理解
1.类的加载过程
程序经过javac.exe的命令以后,会生成一个或多个字节码文件(.class结尾),
使用java.exe命令对某个字节码文件进行解释运行(相当于将某个字节码文件加载到内存,此过程称为类的加载,加载到内存中的类,我们称为运行时类,此运行时类,就作为Class的一个实例)(类本身也是对象 是Class的对象)
万事万物皆对象
2.Class实例的获取方式
方式一通过运行时类的属性.class
Class clazz1=Person.class;
方式二通过运行时类的对象,调用getClass();
Person p1=new Person();
Class clazz2=p1.getClass();
方式三 调用Class的静态方法forName(String classPath)***(用的多)***
Class clazz3=Class,forName(“com.atguigu.java.Person”)//路径
都是True,注意加载到内存中的运行时类是唯一的
方式四使用类的加载器 ClassLoader
ClassLoader classLoader=ReflectionTest.class.getClassLoader();
//生成加载器对象
Class clazz4=classLoader.loadClass(“com.atguigu.java.Person”);//得到运行时类
三类的加载过程
四 类的加载器
1.读取配置文件的方式一
获取配置信息Properties
读取配置文件方式二
五.利用反射创建对象
1.newInstance()
六获取运行时类及父类中声明为public访问权限的属性
1.属性
2.方法
3.构造器
4.获取运行时类的父类
5.获取运行时类的带泛型的父类
6.运行时类的接口,所在包,注册源
包
注解
7.调用运行时类的指定属性
获取private的属性
8.调用运行时类的指定方法
9.调用运行时类指定的构造器