Какая разница, чтобы объявить сигнатуру метода интерфейса Java как окончательную и не окончательную? - PullRequest
3 голосов
/ 19 июня 2011

Какая разница в интерфейсе Java для объявления сигнатуры метода как окончательной и не финальной?

int setName(String name);

int setName(final String name);

Ответы [ 3 ]

10 голосов
/ 19 июня 2011

Раздел 8.4.1 спецификации языка Java позволяет объявить параметры в любом объявлении метода (и в том числе в интерфейсах) как окончательные.Однако, поскольку это не влияет на подпись метода , объявление параметра абстрактной функции как final не имеет никакого эффекта.Поскольку все методы интерфейса неявно абстрактны , оба варианта эквивалентны.

2 голосов
/ 19 июня 2011

Самый полный ответ, который я смог найти в Google, это этот .

Приятно, что они упоминают ссылку с использованием анонимных внутренних классов, так как это сильный пример использования для конечных параметров.

С уважением, Стефан

1 голос
/ 20 июня 2011

Пара случайных различий

  • Может использоваться IDE в качестве подсказки.например, когда вы получаете IDE для автоматической генерации ваших реализованных методов, он по умолчанию сделает параметры final таким же образом, как и повторно использует те же имена параметров, даже если они не являются частью подписи.

  • модификатор final доступен через отражение и может использоваться каркасом для некоторых подразумеваемых целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...