在方法签名中具有最终输入参数意味着什么?
采取以下行动的原因是什么:
public void processSomething(final String hello, final String two, final Car car){}
相反:
public void processSomething(String hello, String two, Car car){}
采取以下行动的原因是什么:
public void processSomething(final String hello, final String two, final Car car){}
相反:
public void processSomething(String hello, String two, Car car){}
这意味着在方法中,您无法为参数分配新值。
想要这样做的一个常见原因是能够使用匿名内部类中的参数,这些参数只能引用局部变量,包括参数。final
这样做的另一个原因是,如果您的编码风格倾向于尽可能将所有局部变量声明为最终变量。(就个人而言,我试图将它们视为最终结果,但避免以这种方式实际声明它们,因为这会增加垃圾。
这意味着您无法更改引用。字符串是不可变的,但如果 Car 是可变的,则可以更改该 Car 中的字段,但不能将其更改为另一个 Car。