Завершающая инициализация переменной Java в статическом блоке
Предположим случай:
public class Executor {
public static class Properties {
public final static String SOME_PROPERTY;
static {
java.util.Properties properties = PropertiesReader.readProperties();
SOME_PROPERTY = properties.getProperty("some.property");
}
}
}
Здесь все хорошо и код компилируется. Но когда мы изменим это так:
public class Executor {
public static class Properties {
public final static String SOME_PROPERTY;
static {
java.util.Properties properties = PropertiesReader.readProperties();
// The changes go here
Properties.SOME_PROPERTY = properties.getProperty("some.property");
}
}
}
Это по какой-то причине не удается, с ошибкой компиляции, которая
"последнее поле не может быть назначено"
Не могли бы вы помочь, объяснив разницу между первым и вторым образцом?