在程序运行状态中,对于任意一个类或对象,都能够获取到这个类的所有属性和方法(包括私有属性和方法),这种动态获取信息以及动态调用对象方法的功能就称为反射机制。简单来讲,通过反射,类对我们是完全透明的,想要获取任何东西都可以。
JAVA反射机制是在运行状态中:
1.对于任意一个类,都能够知道这个类的所有属性和方法;
2.对于任意一个对象,都能够调用它的任意一个方法和属性;
3.这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射提供的功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时判断任意一个类所具有的成员变量和方法
4.在运行时调用任意一个对象的方法
这里引用前辈的文章,此处放上链接:
https://blog.csdn.net/weixin_42724467/article/details/84311385
获取Class对象的三种方式:
1.【Source源代码阶段】 Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象;
多用于配置文件,将类名定义在配置文件中,通过读取配置文件加载类。
2.【Class类对象阶段】 类名.class:通过类名的属性class获取;
多用于参数的传递
3.【Runtime运行时阶段】对象.getClass():此方法是定义在Objec类中的方法,因此所有的类都会继承此方法。
多用于对象获取字节码的方式。
这里引用前辈的文章,此处放上链接:
https://blog.csdn.net/Mr_wxc/article/details/105812627
如:
方式一:Class.forName("全类名");
Class class1 = Class.forName("Hello world");
方式二:类名;
Class class class2 = Person.class;
方式三:对象.getClass();
Person person = new Person();
Class class3 = person.getClass();
Field成员变量:
1.public Field getDeclaredField(String name)
2.public Field getField(String name)
3.public Field[] getDeclaredFields()
4.public Field[] getFields()
没啥时间,目前就弄了这些>_<