Объявите две именованные константы с одним литералом. Разные имена отражают смысл, но не требуют создавать разные объекты String.
Объявление неизменяемых строк для разных смыслов
Объявите две именованные константы с одним литералом. Разные имена отражают смысл, но не требуют создавать разные объекты String.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Внутри класса требуется создать две константы типа static final String:
PLANET_MERCURY– строка со значением "Mercury", представляющая название планеты.GOD_MERCURY– строка со значением "Mercury", обозначающая одноимённого римского бога.
Обе переменные должны быть объявлены как final, чтобы их значение нельзя было изменить после инициализации, но они относятся к разным концептуальным объектам, поэтому их имена должны отражать различие в назначении.
Ответ
Объявите две именованные константы с одним литералом. Разные имена отражают смысл, но не требуют создавать разные объекты String.
public static final String PLANET_MERCURY = "Mercury";
public static final String GOD_MERCURY = "Mercury";
Обе ссылки могут указывать на одну интернированную строку; это нормально. Final запрещает переприсваивание поля, а String неизменяем сам по себе. Если важно исключить путаницу между планетой и божеством на уровне типов, одних имён недостаточно: используйте отдельные enum или value objects. New String здесь не добавляет смысловой безопасности.