Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Static и Static Final |
Автор: Рубильник 25.5.2018, 11:15 |
Для примитивных типов разница между public static final int ABC = 10; и public static int ABC = 10; понятна. В первом случае это константа на уровне кода, может быть вычислена до компиляции и до компиляции могут быть вычислены значения на её основе. Но вот если мы сравним public static final MyClass ABC = Factory.create(5); и public static MyClass ABC = Factory.create(5); то в обоих случаях объект будет создан динамически, и первый вариант никаких преимуществ перед вторым не имеет. Или имеет? |
Автор: AntonSaburov 25.5.2018, 12:03 |
Имеет - ссылку нельзя направить на ДРУГОЙ объект. Т.е. можно менять тот объект, на который указываtт final, но нельзя использовать другой. |
Автор: Рубильник 25.5.2018, 12:41 |
Это скорее минус, чем плюс. Не static final можно оставить пустой, и инициализировать в любое время после создания класса. И не получить за это ExceptionInInitializerError, если классы имеют ссылки друг на друга. Сделаю ударение в своем вопросе на слово "преимущество". Т.е. будет ли в случае объектов static final лучше, чем просто static? Например, в плане производительности. |