我经常遇到如下所示的方法:
public void foo(final String a, final int[] b, final Object1 c){ }
如果在没有传递最终参数的情况下调用此方法会发生什么。即稍后更改的Object1(因此未声明为final)可以很好地传递给此方法
Java 总是在将参数发送到方法之前制作一个副本。这意味着 final 对调用代码没有任何区别。这仅意味着在方法内部不能重新分配变量。
请注意,如果您有最终对象,您仍然可以更改对象的属性。这是因为 Java 中的对象实际上是指向对象的指针。并且只有指针被复制(并且将在您的方法中是最终的),而不是实际的对象。