Java private final static Field setzen – Setzen was nicht gesetzt werden darf

Ich hatte das Problem, dass eine Variable eines externen Pakets falsch gesetzt wurde. Ich konnte die private static field Variable also nicht einfach ausbessern. Mir wurde zuvor erzählt, dass man in Java auch geschützte Felder im Nachhinein schreibbar setzen kann. Dieser code von stackoverflow hat mich gerettet

static void setFinalStatic(Class clazz, String fieldName, Object newValue) throws NoSuchFieldException, IllegalAccessException {
    Field field = clazz.getDeclaredField(fieldName);
    field.setAccessible(true);
    Field modifiers = field.getClass().getDeclaredField("modifiers");
    modifiers.setAccessible(true);
    modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
    field.set(null, newValue);
}

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert