Faut quand même le vouloir...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class Test {
private static String privateStaticChar = "valeur initiale";
public static final String MonChampStaticFinal = privateStaticChar;
public static void main(String[] args) throws Exception {
System.out.println(Test.MonChampStaticFinal); // print "valeur initiale"
setFinalStatic(Test.class.getField("MonChampStaticFinal"), "valeur modifiée");
System.out.println(Test.MonChampStaticFinal); // print "valeur modifiée"
}
static void setFinalStatic(Field field, Object newValue) throws Exception {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
} |
D'ailleurs si la variable est déclarée de cette façon
public static final String MonChampStaticFinal = "valeur initiale";
J'ai pas réussi, je ne sais pas si c'est possible.
Romain.
Partager