Avatar ·

什么是 Java 中的反射(Reflection)以及为什么需要它?

大家好!我学习 Java 大约半年了,编写一些简单的应用程序,遇到了术语“反射”(Reflection API)。我读过 Oracle 的文档,但没有完全理解。 我有一个简单的类: ```java public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("你好,我是 " + name); } private void secretMethod() { System.out.println("秘密方法!"); } } ``` 我明白通常我们通过 `new User("伊万", 25)` 创建对象并直接调用方法。但为什么需要在程序运行时获取类的信息?这在什么时候会有用? 让我困惑的是,反射允许访问私有字段和方法并调用它们。这难道不违反封装吗?反射有替代方案吗? 请用简单的例子解释:什么是