在此示例中,声明Object final
会提供什么值?
private void doSomethingClever(final Object o) {
}
答案 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关键字,现代编译器也会分析和优化代码。有人会在此纠正我,因为我不是百分之百确定这一点!