This question is strongly related to Change private static final field using Java reflection. There, it was asked, how to change a private static final
variable.
However, the answers on that question do not work in Java 12+ as you cannot access private variables of java.lang.reflect.Field
using Reflection.
When you try to do it despite that, you will end up with a stack trace like:
Exception java.lang.NoSuchFieldException: modifiers
at Class.getDeclaredField (Class.java:2412)
at <your call of Field.class.getDeclaredField("modifiers").setAccessible(true)>
Is there any way to change such a constant in those versions?
I could imagine being possible utilizing JNI/JNA.
static final
fields as constants, so there is no guarantee that the updated value will be used in the program, instead of an old value. Better to find another solution to your problem. – Odisodiumjavac
. I'm talking about the JIT compiler treating any value in astatic final
field as a constant. – Odisodium