Какая разница в интерфейсе Java для объявления сигнатуры метода как окончательной и не финальной?
int setName(String name); int setName(final String name);
Раздел 8.4.1 спецификации языка Java позволяет объявить параметры в любом объявлении метода (и в том числе в интерфейсах) как окончательные.Однако, поскольку это не влияет на подпись метода , объявление параметра абстрактной функции как final не имеет никакого эффекта.Поскольку все методы интерфейса неявно абстрактны , оба варианта эквивалентны.
final
Самый полный ответ, который я смог найти в Google, это этот .
Приятно, что они упоминают ссылку с использованием анонимных внутренних классов, так как это сильный пример использования для конечных параметров.
С уважением, Стефан
Пара случайных различий
Может использоваться IDE в качестве подсказки.например, когда вы получаете IDE для автоматической генерации ваших реализованных методов, он по умолчанию сделает параметры final таким же образом, как и повторно использует те же имена параметров, даже если они не являются частью подписи.
модификатор final доступен через отражение и может использоваться каркасом для некоторых подразумеваемых целей.