为什么最终关键字在方法中大量使用,即使最终没有定义它们也是完全正确的

Hor*_*ice 0 java final

我问同事他为什么在这种方法中使用final关键字进行分配,他的回答是"为什么不呢?".我没有看到将决赛放在这里的好处.或者经常,我也会在课堂定义中看到它.

protected void sendIndexWorkflowRequest(Status status)
{

    final long contextId = status.getAppContextId();
    PrepareIndexPostData preparePostData = new PrepareIndexPostData.Builder(contextId).build();

    searchIndexService.activateAggsIndex(preparePostData);
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*new 6

他声称该变量不得在该方法中发生变化.它本质上是一种编码安全检查.即,如果将变量重新分配给(很可能是偶然的),编译器将引发错误,并且通常被认为是一种好的做法.

您可能会看到与方法参数类似的内容,例如

public void method(final Object a) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

断言Object 'a'参考不应该在方法中改变.您可能希望在某个阶段更改它(在这种情况下删除final)但保留它,因为final虽然您不需要它是可变的可以保护您免受编码错误.

请注意,final如果您在内部类中引用此类变量,则需要使用变量(现在不是Java 8的要求,这可以将非最终变量确定为有效的最终变量)