Reflection. Change private static final field
From AsIsWiki
Change private final field
import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class Main { public static void main(String args[]) throws Exception { System.out.println(A.getStr()); setFinalStatic(A.class.getDeclaredField("str"), "321"); System.out.println(A.getStr()); } 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); } } class A { private static final String str = new String("123"); public static String getStr() { return str; } }