2

在这个例子中,声明Object final提供了什么价值?

private void doSomethingClever(final Object o) {

}
4

4 回答 4

3

这样做的目的是让其他人来访问您的代码知道参数不能更改。如果他们设置了一个值,则会导致编译器错误。

于 2012-05-05T01:56:00.093 回答
2

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

有用的链接:

于 2012-05-05T01:57:37.500 回答
1

您将无法o在方法中分配给。

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

于 2012-05-05T01:56:21.027 回答
0

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

o = new Object();

或者

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

但调用

o.doSomething();

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

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

于 2012-05-05T02:47:10.990 回答