В Java вполне логично определять аргументы final в методах интерфейса и не подчиняться этому в классе реализации, например:
public interface Foo {
public void foo(int bar, final int baz);
}
public class FooImpl implements Foo {
@Override
public void foo(final int bar, int baz) {
...
}
}
В приведенном выше примере bar и baz имеют противоположные определения final в классе VS интерфейса.
Таким же образом, ограничения final не применяются, когда один метод класса расширяет другой, либо abstract, либо нет.
Хотя final имеет практическое значение внутри тела метода класса, существует ли какая-либо точка, указывающая final для параметров интерфейса интерфейса?