Ändern private static final-Feld mit Hilfe der Java reflection

Habe ich eine Klasse mit einem private static final Feld, dass, leider, ich muss es ändern zur Laufzeit.

Mit der spiegelung bekomme ich diesen Fehler: java.lang.IllegalAccessException: Can not set static final boolean field

Gibt es eine Möglichkeit, um den Wert zu ändern?

Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK");
hack.setAccessible(true);
hack.set(null, true);
So eine schlechte Idee. Ich würde versuchen, um die Quelle und kompilieren (oder auch zu dekompilieren/kompilieren) statt.
System.ist ein public static final-Feld, kann sich aber auch geändert.
System.out/in/err sind so "special", dass das Java-Memory-Modell, die spezielle Erwähnung von Ihnen. Sie sind keine Beispiele, die befolgt werden sollten.
naja mein Punkt ws zu finden, ein hack in der zwischen meine app arbeiten, bis die lib verantwortlich machen, die änderung bei der nächsten Version so dass ich nicht brauchen, um hack mehr...

InformationsquelleAutor fixitagain | 2010-07-21

Schreibe einen Kommentar