반사 메커니즘을 사용하여 필드 값 설정: Field.getDeclaredField()를 통해 필드 참조를 가져옵니다. Field.set() 메서드를 호출하여 대상 개체의 새 값을 설정합니다.
Java 리플렉션 메커니즘: 필드 값 설정
리플렉션 메커니즘은 런타임 시 클래스, 메서드, 필드를 확인하고 수정하는 메커니즘입니다. 이를 통해 Java 프로그램의 개인 또는 보호 멤버에 액세스하거나 설정하거나 호출할 수 있습니다.
필드 값 설정
필드 값을 설정하려면 Field.set()
메서드를 사용할 수 있습니다. 이 메소드는 두 개의 매개변수를 허용합니다: Field.set()
方法。该方法接受两个参数:
语法:
field.set(目标对象, 新值);
代码示例:
假设我们有一个 Person
类,它具有一个私有字段 age
。我们可以使用以下代码设置 age
的值:
import java.lang.reflect.Field; public class Main { public static void main(String[] args) throws Exception { // 实例化 Person 对象 Person person = new Person(); // 获取 Person 类的私有字段 age Field field = person.getClass().getDeclaredField("age"); // 将 age 的值设置为 30 field.set(person, 30); // 输出 age 的值 System.out.println(person.getAge()); // 输出:30 } } class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
注意:
setAccessible(true)
方法解除字段的私有性。Field.set()
Person이 있다고 가정합니다.
클래스에는 age
비공개 필드가 있습니다. 다음 코드를 사용하여 age
값을 설정할 수 있습니다: 🎜rrreee🎜🎜참고: 🎜🎜setAccessible(true)을 사용해야 합니다. code> 필드 비공개를 해제하는 방법입니다. 🎜<li>보호 또는 패키지 액세스 필드를 설정할 수도 있습니다. 🎜</li>
<li>원본 개체를 수정하지 않으려면 <code>Field.set()
메서드를 사용하여 필드 값의 복사본을 만들 수도 있습니다. 🎜🎜위 내용은 Java 반사 메커니즘은 필드 값을 어떻게 설정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!