标记方法参数final,值

时间:2012-05-05 01:55:00

标签: java

在此示例中,声明Object final会提供什么值?

private void doSomethingClever(final Object o) {

}

4 个答案:

答案 0 :(得分:3)

这样做是因为它允许其他人出现并访问您的代码,以便知道参数无法更改。如果他们设置了值,就会导致编译错误。

答案 1 :(得分:2)

  

也就是说使用它告诉读者和编译器   参数不会在方法中修改。

有用的链接:

答案 2 :(得分:1)

您将无法在方法中分配o

当有一个内部类(如侦听器)或某些runnable访问此局部变量时,它非常有用。

答案 3 :(得分:0)

老实说,我并没有真正意识到在方法参数中使用final的意义。 final只会保证变量不会指向另一个对象,而不是对象本身不会是不可变的......你可以改变Object o的状态,你只是不能把o分配给另一个像B这样的对象

o = new Object();

Object b = new Object();
o=b;

但是要调用

o.doSomething();

很好。那么为什么到处都是丑陋的最终关键字呢?

至于性能优化,我相信即使没有方法参数中的final关键字,现代编译器也会分析和优化代码。有人会在此纠正我,因为我不是百分之百确定这一点!