Java 面试题
目录

Java 中如何通过反射创建对象、调用方法、访问属性?

· 约 4 分钟读完 · 第 35 / 274 章

推荐答案

本题详细解读

1. 获取Class对象

在Java中,反射的第一步是获取目标类的Class对象。可以通过以下方式获取:

  • Class.forName("全限定类名"):通过类的全限定名获取Class对象。
  • MyClass.class:通过类字面常量获取Class对象。
  • instance.getClass():通过对象实例获取Class对象。

2. 通过反射创建对象

通过Class对象获取构造器(Constructor),然后使用newInstance()方法创建对象。如果构造器是私有的,需要先调用setAccessible(true)来绕过访问控制。

3. 通过反射调用方法

通过Class对象获取方法(Method),然后使用invoke()方法调用该方法。如果方法是私有的,需要先调用setAccessible(true)来绕过访问控制。

4. 通过反射访问属性

通过Class对象获取属性(Field),然后使用set()方法设置属性值,或使用get()方法获取属性值。如果属性是私有的,需要先调用setAccessible(true)来绕过访问控制。

5. 注意事项

  • 反射操作可能会破坏封装性,因此应谨慎使用。
  • 反射操作通常比直接调用方法或访问属性要慢,因此在性能敏感的场景中应避免使用。
  • 反射操作可能会抛出IllegalAccessException、NoSuchMethodException等异常,需要进行适当的异常处理。