Làm thế nào có thể ngủ đông có thể truy cập một trường/phương thức riêng của một lớp java, ví dụ để đặt @Id?Làm cách nào để có thể truy cập vào một trường riêng tư?
Cảm ơn
Làm thế nào có thể ngủ đông có thể truy cập một trường/phương thức riêng của một lớp java, ví dụ để đặt @Id?Làm cách nào để có thể truy cập vào một trường riêng tư?
Cảm ơn
Giống như Crippledsmurf nói, nó sử dụng sự phản chiếu. Xem Reflection: Breaking all the Rules và Hibernate: Preserving an Object's Contract.
Tại đoán tôi sẽ nói rằng điều này được thực hiện bằng cách phản ánh vào loại mục tiêu và thiết lập các lĩnh vực trực tiếp sử dụng phản ánh
Tôi không phải là một lập trình viên java nhưng tôi tin rằng java có hỗ trợ phản ánh tương tự của NET mà tôi sử dụng
Hãy thử
import java.lang.reflect.Field;
class Test {
private final int value;
Test(int value) { this.value = value; }
public String toString() { return "" + value; }
}
public class Main {
public static void main(String... args) throws NoSuchFieldException, IllegalAccessException {
Test test = new Test(12345);
System.out.println("test= "+test);
Field value = Test.class.getDeclaredField("value");
value.setAccessible(true);
System.out.println("test.value= "+value.get(test));
value.set(test, 99999);
System.out.println("test= "+test);
System.out.println("test.value= "+value.get(test));
}
}
in
test= 12345
test.value= 12345
test= 99999
test.value= 99999