كيف يمكن أن يصل السبات إلى حقل خاص؟
-
12-09-2019 - |
سؤال
كيف يمكن أن تصل السبات إلى حقل / طريقة خاصة لفئة Java، على سبيل المثال لتعيين id؟
شكرا
المحلول
مثل criippledsmurf يقول، فإنه يستخدم التفكير. يرى انعكاس: كسر جميع القواعد و السبات: الحفاظ على عقد كائن.
نصائح أخرى
يحاول
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));
}
}
مطبوعات
test= 12345
test.value= 12345
test= 99999
test.value= 99999
في تخمين، أود أن أقول أن هذا يتم من خلال التفكير في النوع المستهدف وإعداد الحقول مباشرة باستخدام الانعكاس
أنا لست مبرمج Java لكنني أعتقد أن Java لديه دعم انعكاس مماثل لتلك التي أفعلها.
لا تنتمي إلى StackOverflow