Технически можно, но это нарушает контракт final и приводит к непредсказуемому поведению.
Field field = obj.getClass().getDeclaredField("finalField");
field.setAccessible(true);
field.set(obj, newValue); // может не сработатьПроблемы
— JVM может заинлайнить final значение при компиляции
— изменения могут не отразиться из-за оптимизаций
— нарушается thread-safety гарантия final
🐸 Библиотека собеса по Java
#core