在方法签名中有一个最终输入参数是什么意思?

Oh *_*oon 15 java methods final input

这样做的原因是:

public void processSomething(final String hello, final String two, final Car car){}
Run Code Online (Sandbox Code Playgroud)

而不是:

public void processSomething(String hello, String two, Car car){}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 27

这意味着在方法中,您无法为参数指定新值.

想要这样做的一个常见原因是能够使用匿名内部类中的final参数,这些参数只能引用局部变量,包括参数.

执行此操作的另一个原因是,如果可能,您的编码样式有利于将所有局部变量声明为final.(就我个人而言,我试图它们视为最终版本,但要避免实际上它们声明为这样,因为它增加了它.)


Pet*_*rey 6

这意味着您无法更改引用.字符串是不可变的,但如果Car是可变的,您可以更改该Car中的字段,您无法将其更改为另一个Car.

  • +1指出String是不可变的,但如果Car不是不可变的,那么如果没有最终的访问修饰符,那么内部的字段可能会被改变! (2认同)
  • 即使参考是最终的,您也可以更改字段.这与C++中的`const`不同. (2认同)