Mit Spring ReflectionUtils
Ich nicht voll verstehen, die letzten Zeile im folgenden Stück code
Field init = ReflectionUtils.findField(ABCClass.class, "init");
ReflectionUtils.makeAccessible(init);
init.set(null, false);
Was ich Tue auch verstehen, dass seine Einstellung die AbcClass.init=false mit Hilfe der Reflection-API. Was ich nicht verstehe, ist, warum wir haben nicht einen setter wie
set(Object value) //looks logical as we have reference to field , we can simply set the value
sondern wir haben so Etwas wie
set(Object obj,Object value)
Ging ich durch die api-doc http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html#set(java.lang.Objekt, java.lang.Objekt)
es sagt
Wenn das zugrunde liegende Feld ist statisch, das obj-argument wird ignoriert; es kann
null sein.Sonst die darunter liegenden Feld ist ein Instanz-Feld. Wenn die angegebene
Objekt-argument null ist, gibt die Methode wirft eine NullPointerException.
Aber in meinem test-Fall ist es nicht das werfen einer null-Zeiger-Ausnahme
Habe ich versucht zu googeln um weitere Beispiel für die Verwendung dieser api nicht finden nützliches Beispiel , können einige mehr Beispiele die mir helfen können, besser zu verstehen.
InformationsquelleAutor Lav | 2013-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
init
ist eine statische Methode auf ABCClass. Wie die Dokumentation sagt, wenn das zugrunde liegende Feld ist statisch, das erste argument wird ignoriert; es kann null sein.InformationsquelleAutor Aleksander Blomskøld
Den Grund kann ich mir vorstellen ist diese.
Den Weg, die Sie bekommen, die es nicht wissen, die Instanz, zu der es gehört. In statische Felder, dass ist in Ordnung, da statisch das Feld gehören zur Klasse und können unabhängig voneinander existieren ohne ein Objekt instanziiert.
Aber eine nicht statische Feld wird die Notwendigkeit eines instanziierten Objekts zu existieren. Was in der set-Methode erfordern zu wissen, was diese Instanz ist.
Es gibt kein Beispiel-code für diese. Es ist nur die einfache Begründung...
InformationsquelleAutor Thihara