小编典典

接口方法中的最终参数 - 有什么意义?

all

在 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,在类 VS 接口中baz有相反的定义。final

以同样的方式,final当一个类方法扩展另一个类方法时,无论是否扩展,都abstract不会强制执行任何限制。

虽然final在类方法体内有一定的实用价值,但final接口方法参数有什么规定吗?


阅读 63

收藏
2022-06-29

共1个答案

小编典典

这似乎没有任何意义。根据Java 语言规范
4.12.4

声明一个变量 final 可以作为有用的文档,说明它的值不会改变,并且可以帮助避免编程错误。

但是,方法参数的修饰符在匹配重写方法的签名final的规则中没有提及,并且它对调用者没有影响,仅在实现的主体内。此外,正如
Robin 在评论中所指出的,方法参数上的修饰符对生成的字节码没有影响。(这不适用于 .
的其他用途。)final``final

2022-06-29