反射(Reflection)是 Java 提供的一种动态操作类、对象、方法和属性的机制。通过反射,可以在运行时获取类的元数据(如类名、方法、字段等),并动态调用对象的方法或修改字段的值,而无需在编译时确定具体类型。
反射的原理
博客将会介绍如何实现Java 反射的使用方法。希望这篇博客对Unity的开发者有所帮助。 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 欢迎点赞评论哦.下面就让我们进入正文吧 !
提示:以下是本篇文章正文内容,下面案例可供参考
反射的核心是 Class 对象,所有反射操作都基于此。获取 Class 对象的方式有三种:
Class<?> clazz = String.class;String str = "Hello";
Class<?> clazz = str.getClass();Class<?> clazz = Class.forName("java.lang.String");Constructor<?> constructor = clazz.getDeclaredConstructor(String.class); // 指定参数类型Object instance = constructor.newInstance("Hello");Field field = clazz.getDeclaredField("fieldName"); // 获取字段(包括私有)field.setAccessible(true); // 解除私有字段的访问限制
field.set(instance, "newValue"); // 修改值
Object value = field.get(instance); // 获取值Method method = clazz.getDeclaredMethod("methodName", int.class); // 方法名 + 参数类型method.setAccessible(true); // 若方法是私有的
Object result = method.invoke(instance, 123); // 调用并传参private Singleton() {
if (instance != null) {
throw new IllegalStateException("单例已存在!");
}
}
反射是 Java 动态能力的核心,但需谨慎使用。在明确需求且无替代方案时,合理利用反射可以大幅提升灵活性;滥用则会导致性能下降、代码可维护性降低。
典型应用场景
本次总结的就是Java 反射的使用方法, 有需要会继续增加功能 如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢 你的点赞就是对博主的支持,有问题记得留言评论哦! 不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!