什么是 Java 反射?(附示例代码)
Java 反射是指在运行时获取类的信息,并可以动态地操作对象或者调用方法。反射可以在运行时获取类的属性和方法,并且可以在运行时调用这些方法或者实例化对象,从而实现一些动态性的操作。
以下是一个简单的示例代码,演示如何通过反射获取类的信息和调用类的方法:
import java.lang.reflect.Method;
public class ReflectionExample {
public static void main(String[] args) {
try {
// 获取类的 Class 对象
Class<?> clazz = Class.forName("java.lang.String");
// 获取类的所有方法
Method[] methods = clazz.getDeclaredMethods();
// 打印类的所有方法名
for (Method method : methods) {
System.out.println(method.getName());
}
// 动态调用类的方法
Object obj = clazz.newInstance();
Method method = clazz.getMethod("toUpperCase");
String result = (String) method.invoke(obj, "hello");
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码中,我们使用 Class.forName()
方法获取了 String
类的 Class 对象,然后通过 getDeclaredMethods()
方法获取了 String
类的所有方法,并且打印了这些方法的名称。接着我们动态地调用了 String
类的 toUpperCase()
方法,并且打印了方法的返回结果。
需要注意的是,在使用反射时需要处理异常,否则程序可能会崩溃。同时,反射的使用也会带来一定的性能损失,因此在实际开发中需要谨慎使用。