我无法理解为什么double xx
和yy
被置于构造函数中final
。为什么我不把它们double xx
和double yy
放在一起。为什么
他们必须final
吗?我猜这个的全部目的是
创建immutable
对象。
public class Point {
private final double x, y;
private double distance;
public Point(final double xx, final double yy) {
this.x = xx;
this.y = yy;
this.distance = -1;
}
}
答案 0 :(得分:11)
这些参数不需要是最终的。
使参数最终有两个原因:
显然(1)不适用。
(2)是不必要的,因为它是如此简单的代码,你可以看到它没有改变参数。
有一种思想流派认为所有参数和局部变量都应当被声明为最终的,因为这样可以更容易推理代码,就像使用不可变类型更容易使用它们的代码的原因。
还有另一种思想流派认为,在任何地方添加final
只是不必要的噪音,如果你正在编写方法,你无法判断价值是否在变化,那么你的方法太长了
很大程度上,让参数和局部变量最终归结为个人/团队偏好。
答案 1 :(得分:0)
将x和y变量声明为最终解决了目的(即以后不得更改该值)。将构造函数的参数声明为final是没有意义的。