为什么我要在Java中的方法参数上使用关键字“final”?
我不明白其中final
的关键字是真的方便的时候它是在方法的参数使用。
如果我们排除使用匿名类,可读性和意图声明,那么对我来说似乎几乎一文不值。
强制某些数据保持不变并不像看起来那么强大。
如果参数是基元,那么它将没有任何效果,因为参数作为值传递给方法,并且更改它将在范围之外没有任何影响。
如果我们通过引用传递参数,那么引用本身就是一个局部变量,如果从方法中更改引用,那么从方法范围外部不会产生任何影响。
考虑下面的简单测试示例。尽管该方法改变了给定的参考值,但该测试仍然通过,但它没有效果。
public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c));}private void change(Collection<Integer> c) { c = new ArrayList<Integer>();}public void nullify(Collection<?> t) { t = null;}
阿晨1998
慕码人8056858
相关分类