【发布时间】:2012-05-14 13:09:18
【问题描述】:
在本例中,声明 Object final 提供什么价值?
private void doSomethingClever(final Object o) {
}
【问题讨论】:
标签: java
在本例中,声明 Object final 提供什么价值?
private void doSomethingClever(final Object o) {
}
【问题讨论】:
标签: java
这样做的目的是让其他访问您的代码的人知道参数无法更改。如果他们设置了一个值会导致编译器错误。
【讨论】:
也就是说,使用它告诉读者和编译器 方法中不会修改参数。
有用的链接:
【讨论】:
您将无法在该方法中分配给o。
当有一个内部类(例如 listener 或一些可运行的对象访问此局部变量)时非常有用。
【讨论】:
说实话,我并没有真正看到在方法参数中使用 final 的意义。 final 只会保证变量不会指向另一个对象,而不是对象本身不会是不可变的...您可以更改对象 o 的状态,但不能将 o 分配给另一个对象,例如 B
o = new Object();
或
Object b = new Object();
o=b;
但调用
o.doSomething();
很好。那么为什么到处都是丑陋的最终关键字使代码混乱呢?
至于性能优化,我相信即使方法参数中没有 final 关键字,现代编译器也会分析和优化代码。有人愿意纠正我吗,因为我不是 100% 确定这一点!
【讨论】: