方法参数应在Java8中作为最终参数吗

时间:2019-05-10 16:37:21

标签: java

在java8中,如果我们不再分配变量,变量实际上是最终的。因此,这意味着如果我们要声明一个方法,并且如果我们不声明其参数为最终参数,那么如果我们未在方法定义中分配它们,则它们实际上是最终参数。那么,将参数定为final对java8有什么影响吗?

3 个答案:

答案 0 :(得分:3)

IMO,将参数标记为final的原因是为了表明您所依赖的参数是final。如果您在lambda表达式或内部类中使用参数,则可能是这种情况。将参数标记为final会告诉下一位程序员(或者您现在距离一年后),有一些代码依赖该参数为final。

答案 1 :(得分:0)

不。除非您在匿名函数或lambda表达式中使用它,否则它实际上不是最终的。不是正常方法,为什么应该这样。

答案 2 :(得分:0)

我使用final的方式与您相同。对我来说,它在局部变量和方法参数上看起来是多余的,并且没有传达有用的额外信息。

重要的一点是,要努力使我的方法简洁明了,每个方法都执行一个任务。因此,我的局部变量和参数的范围非常有限,并且仅用于单个目的。这样可以最大程度地减少无意中重新分配它们的机会。

此外,您肯定知道,final不保证您不能更改(非基本)变量的值/状态。只是您不能在初始化后将引用重新分配给该对象。换句话说,它仅与原始或不可变类型的变量无缝地协同工作。考虑

final String s = "forever";
    final int i = 1;
    final Map<String, Integer> m = new HashMap<String, Integer>();

    s = "never"; // compilation error!
    i++; // compilation error!
    m.put(s, i); // fine

这意味着在很多情况下,它仍然不能使理解代码内部发生的事情变得更加容易,并且误解了它实际上可能会导致难以发现的细微错误