سؤال

كيف يمكن أن تصل السبات إلى حقل / طريقة خاصة لفئة 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 لديه دعم انعكاس مماثل لتلك التي أفعلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top