Java反射机制
一、什么是反射
1、什么是反射?
将类的各个组成部分封装为其他对象叫反射。动态的获取信息以及动态的调用对象的过程叫Java反射机制.
直白说,就是在程序运行的时候能够获取类的所有属性和方法。
2、反射被称为框架设计的灵魂
框架:一个半成品软件。在框架的基础上开发软件可以简化代码。
因此,框架就像做一种有解题步骤的数学题一样,有了解题步骤,解题便方便了许多,只需要将解题步骤吃透,这类的数学题就考不倒你。
二、反射的原理
Java程序运行的三个阶段
第一阶段:称为source源代码阶段。
在这一阶段程序还没有进入内存,还在硬盘中。并且这一阶段是将我们所编写的java文件进行编译称为一个.class文件(也就是字节码文件)
注:字节码文件中包括三部分内容:成员变量、构造方法、成员方法。
第一阶段向第二阶段进行是通过类加载器(即:ClassLoader),把程序加载进了内存。
第二阶段:称为Class类对象阶段。
这一阶段便是把第一阶段中.class文件中的成员变量、构造方法、成员方法分别进行封装,成为了Class类对象。而Class类对象中有成员变量封装成的Filed对象、构造方法封装成的Constructor对象、成员方法封装成的Method对象。
而这一阶段的封装过程便是反射。并且我们可以明白为什么每个类都是一个对象,一个java.lang.Class的实例对象(表示正在运行的Java应用程序中的类和接口),一个类对象。
第三阶段:称为runtime运行阶段。
Java程序运行三个阶段的图如下所示:
三、反射的好处
1、可以在程序运行过程中,操作这些对象
2、可以解耦,提高程序的可扩展性
四、反射的运用
以下所举的例子的类均为Person类:
public class Person {
//成员变量
public String a;
private String name;
private int age;
//构造方法
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
publi