| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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? Например, в плане производительности. |