Java反射
介绍
Java反射(Reflection)是Java语言中一种强大的机制,它允许程序在运行时动态地获取类的信息并操作类的属性和方法。通过反射,我们可以在不知道类具体结构的情况下,动态地创建对象、调用方法、访问字 段等。这种能力使得Java程序更加灵活,但也带来了性能上的开销。
反射的核心类是 java.lang.Class
,它代表了一个类的运行时信息。通过 Class
对象,我们可以获取类的构造方法、方法、字段等信息。
反射的基本使用
获取Class对象
在Java中,获取 Class
对象有三种常见的方式:
-
通过类的
class
属性:Class<?> clazz = String.class;
-
通过对象的
getClass()
方法:String str = "Hello";
Class<?> clazz = str.getClass(); -
通过
Class.forName()
方法:Class<?> clazz = Class.forName("java.lang.String");
创建对象
通过反射,我们可以动态地创建类的实例。假设我们有一个 Person
类:
public class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
我们可以通过反射来创建 Person
对象:
Class<?> clazz = Class.forName("Person");
Person person = (Person) clazz.getDeclaredConstructor().newInstance();
person.sayHello(); // 输出: Hello, my name is null