我无法理解为什么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; } }
Andy Turner.. 11
这些参数不需要是最终的.
参数最终有两个原因:
在该函数中声明的内部类中使用它们;
防止他们的价值被意外改变.
显然(1)不适用.
(2)没有必要,因为它是如此简单的代码,你可以看到它没有改变参数.
有一种思想流派认为所有参数和局部变量都应该被声明为最终的,因为这样可以更容易推理代码,就像使用不可变类型更容易推理代码一样使用它们.
还有另一种思想流派认为,final
到处添加只是不必要的噪音,而且,如果你正在编写无法判断价值是否在变化的方法,那么你的方法就太长了.
很大程度上,使参数和局部变量最终归结为个人/团队偏好.
这些参数不需要是最终的.
参数最终有两个原因:
在该函数中声明的内部类中使用它们;
防止他们的价值被意外改变.
显然(1)不适用.
(2)没有必要,因为它是如此简单的代码,你可以看到它没有改变参数.
有一种思想流派认为所有参数和局部变量都应该被声明为最终的,因为这样可以更容易推理代码,就像使用不可变类型更容易推理代码一样使用它们.
还有另一种思想流派认为,final
到处添加只是不必要的噪音,而且,如果你正在编写无法判断价值是否在变化的方法,那么你的方法就太长了.
很大程度上,使参数和局部变量最终归结为个人/团队偏好.