Есть ли способ настоять на том, чтобы вы передали константный/строковый литерал методу Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ настоять на том, чтобы вы передали константный/строковый литерал методу Java?

Сообщение Anonymous »

Людям нравится писать такой код:

Код: Выделить всё

throw new PotatoNotFound("no such potato: %s".formatted(potato));
даже когда конструктор PotatoNotFound уже запрашивает только имя картофеля и выполняет собственное построение строк.
Это вдвойне плохо, поскольку эти интерполяции засоряют наш мониторинг: вместо того, чтобы иметь одну строку в (скажем) сотах для всех наших необнаруженных потребностей картофеля, каждая интерполяция приводит к созданию своей особой строки в таблице, тем самым разрушая все.
Я разрабатываю API вместо этого это выглядит так

Код: Выделить всё

throw giveUp()
.withPotato(potato)
.with("shape", potatoShape)
.andFail("unrecognised potato shape")
где я могу построить карту данных в своих исключениях, отправить их в отель и правильно сгруппировать похожие записи. Представьте себе: нет необходимости анализировать сообщения об ошибках других служб с помощью регулярных выражений.
Однако это работает только в том случае, если вы избегаете использования String.formatted и передаете строковые литералы в функцию andFail.
Используя это в качестве основы.
Если не считать использования перечислений (номера ошибок НЕ являются тем, как выглядят хорошие вещи), есть ли способ обеспечить/запросить, чтобы Java-методу передается что-то не совсем похожее на константу времени компиляции моему методу? Возможно, есть какая-то аннотация (я нашел противоположное: @MagicConstant)
Если Java не может этого сделать, а Kotlin может, я буду рад услышать решение Kotlin.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ava-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»