欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Java八股-Java反射机制

Java八股-Java反射机制

2025/5/21 1:46:05 来源:https://blog.csdn.net/weixin_69353983/article/details/145167940  浏览:    关键词:Java八股-Java反射机制

解释:

Java 反射机制是一种强大的特性,它允许在运行时获取类的信息并操作对象。通过反射,程序可以动态调用对象的方法、获取和修改字段的值,甚至可以创建新的实例。

优点:

可以动态地获取类的信息,不需要在编译时就知道类的信息。
可以动态地创建对象,不需要在编译时就知道对象的类型。
可以动态地调用对象的属性和方法,在运行时动态地改变对象的行为。

缺点:

比较消耗性能。

示例代码:

// Person.java
public class Person {private String name;private int age;// 构造器public Person(String name, int age) {this.name = name;this.age = age;}// 方法public void introduce() {System.out.println("My name is " + name + " and I am " + age + " years old.");}
}// ReflectionExample.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class ReflectionExample {public static void main(String[] args) {try {// 获取 Person 类的 Class 对象Class<?> personClass = Class.forName("Person");// 通过反射创建 Person 对象Constructor<?> constructor = personClass.getConstructor(String.class, int.class);Object personObj = constructor.newInstance("Alice", 30);// 获取并修改私有字段 nameField nameField = personClass.getDeclaredField("name");nameField.setAccessible(true); // 使私有字段可以被访问nameField.set(personObj, "Bob");// 获取并修改私有字段 ageField ageField = personClass.getDeclaredField("age");ageField.setAccessible(true);ageField.set(personObj, 25);// 调用 introduce 方法Method introduceMethod = personClass.getDeclaredMethod("introduce");introduceMethod.invoke(personObj); // 输出: My name is Bob and I am 25 years old.} catch (Exception e) {e.printStackTrace();}}
}

应用场景

  • 框架开发: 如 Spring 和 Hibernate 使用反射来实现动态对象管理。
  • 序列化和反序列化: 转换对象为字节流或将字节流转换为对象。
  • 插件系统: 动态加载和使用外部插件。

鉴于作者水平有限,文章可能存在错误

如有指正,十分感谢

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词