Этот вопрос не о том, как может произойти загрязнение кучи. Этот вопрос заключается не в том, какое влияние имеет аннотация @SafeVarargs
. Я понимаю, что он используется для подавления предупреждений как локально, так и на сайтах вызовов. Я прочитал documentation. Мой вопрос: почему эта аннотация добавлена на язык Java вообще?Является ли присутствие/отсутствие аннотации @SafeVarargs действительно полезным различием?
Рассмотрим следующий пример:
Отсутствие аннотации не полезное различие. Никогда не бывает ситуации, когда вы можете намереваться использовать VarArgs небезопасным способом, то есть «UnsafeVarargs».
Это отличается от других аннотаций, таких как
@Override
, где отсутствие аннотации является полезным отличием: «Эй, я не намерен переопределять какой-либо метод в моем суперклассе, предупредите меня, если кто-то добавит метод с той же подписью к моему суперкласс «.Либо программисты знают, как безопасно пользоваться Varargs, либо нет. Если они добавят аннотацию, это не изменит это. Так разве это не просто ложное чувство безопасности для звонящих?
Это напоминает мне ошибочное представление о том, что держать ручку двери автомобиля при закрытии двери не позволит вам запереть ключи внутри.
Продолжая из пункта 2, было бы лучше отключить предупреждение по всему миру по умолчанию, а затем снова включить его во всем мире при проведении обширного обзора?
Возможно, у меня что-то не хватает. Может быть, аннотация играет полезную роль при переносе из старых версий Java? Я приветствую ваши ответы. Благодарю.