为什么我要在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
 随时随地看视频慕课网APP
随时随地看视频慕课网APP
相关分类