Java介绍通过反射获取类的信息
原创Java反射机制简介
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射的作用
反射机制关键提供以下功能:
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判断任意一个类所具有的成员变量和方法
- 在运行时调用任意一个对象的方法
通过反射获取类信息
下面通过一个明了的示例来展示怎样通过反射获取类的信息。
示例代码
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectExample {
public static void main(String[] args) {
// 获取Person类的Class对象
Class> personClass = null;
try {
personClass = Class.forName("Person");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 获取类的名称
System.out.println("类的名称:" + personClass.getName());
// 获取类的方法信息
Method[] methods = personClass.getDeclaredMethods();
for (Method method : methods) {
System.out.println("方法名:" + method.getName());
}
// 获取类的成员变量信息
Field[] fields = personClass.getDeclaredFields();
for (Field field : fields) {
System.out.println("成员变量名:" + field.getName());
}
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
上述代码中,我们首先通过Class.forName()方法获取Person类的Class对象,然后通过getDeclaredMethods()和getDeclaredFields()方法获取类的方法和成员变量信息,并打印出来。
总结
通过Java反射机制,我们可以在运行时动态地获取类的信息,这对于某些需要在运行时利用不同情况创建不同对象、调用不同方法的场景非常有用。但同时也要注意,过度使用反射机制大概会允许代码可读性和可维护性降低,故而应谨慎使用。