将Java接口方法签名声明为final和non-final有何不同

时间:2011-06-19 08:25:40

标签: java interface final

它在Java接口中将方法签名声明为final和non-final有什么区别?

int setName(String name);

int setName(final String name);

3 个答案:

答案 0 :(得分:10)

Java语言规范的

Section 8.4.1允许将任何方法声明中的参数(包括接口中的参数)声明为final。但是,由于这不会影响方法的signature,因此将抽象函数的参数声明为final无效。由于接口中的所有方法都是implicitely abstract,因此两种变体都是等效的。

答案 1 :(得分:2)

我在谷歌上找到的最完整的答案是this one

很高兴他们提到使用匿名内部类的链接,因为它是最终参数的强大用例。

此致  斯特凡

答案 2 :(得分:1)

一些偶然的差异

  • 它可以被IDE用作提示。例如当你让IDE自动生成你实现的方法时,默认情况下它将使参数final与重用相同参数名称的方式相同,即使它们不是签名的一部分。< / p>

  • 修饰符final可通过反射获得,并可由框架用于某些隐含目的。