Завершающая инициализация переменной 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");
        }
    }
}

Это по какой-то причине не удается, с ошибкой компиляции, которая

"последнее поле не может быть назначено"

Не могли бы вы помочь, объяснив разницу между первым и вторым образцом?

0 ответов

Другие вопросы по тегам