Son zamanlarda Change private static final field using Java reflection tökezledim ve poligonalubricants 'EverythingIsTrue
sınıfını test ettim, iyi çalışıyor, System.out.format("Everything is %s", false);
baskıları Everything is true
gerçekten. BenJava yansımasını kullanarak statik final alanını değiştiremez misiniz?
public class EverythingIsTrue {
public static final boolean FALSE = false;
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);
}
public static void main(String[] args) throws Exception {
setFinalStatic(EverythingIsTrue.class.getField("FALSE"), true);
System.out.format("Everything is %s", FALSE);
}
}
olarak kodunu değiştirmek Ama ne zaman
herkes neden biliyor mu
Everything is false
yazdırır? SetFinalStatic aslında çalışıyor mu, değil mi?
- sadece daha sözlerle! – dty
@dty bu, sonsuz sayıda kelime bile gibi görünüyor;) –
Sizin cevabınız kabul edildi ve benimki hiçbir değer eklemediğinden silindi - sadece kıskançlık! ;-) – dty