为什么在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;

}

回答:

有时,明确(出于可读性)变量不会更改是很好的。这是一个简单的示例,使用final可以节省一些麻烦:

public void setTest(String test) {

test = test;

}

如果你忘记了设置器上的’this’关键字,那么你想要设置的变量就不会设置。但是,如果你在final参数上使用了关键字,则该错误将在编译时捕获。

以上是 为什么在Java的方法参数上使用关键字“ final”? 的全部内容, 来源链接: utcz.com/qa/419533.html

回到顶部