Объявление неизменяемых строк для разных смыслов

Объявите две именованные константы с одним литералом. Разные имена отражают смысл, но не требуют создавать разные объекты String.

Короткий ответ

Что ответить на собеседовании

Объявите две именованные константы с одним литералом. Разные имена отражают смысл, но не требуют создавать разные объекты String.

Подробный разбор

Ответ с пояснениями

Условие

Внутри класса требуется создать две константы типа static final String:

  1. PLANET_MERCURY – строка со значением "Mercury", представляющая название планеты.
  2. 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 здесь не добавляет смысловой безопасности.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее