构造函数中的最终 double java
final double in constructor java
我无法理解为什么 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;
}
}
这些参数不需要是最终的。
将参数设为最终参数有两个原因:
- 在该函数中声明的内部 class 中使用它们;
- 为了防止它们的值被意外更改。
显然 (1) 不适用。
(2) 不是必需的,因为它是非常简单的代码,您可以看到它没有更改参数。
有一种学派认为所有参数和局部变量理所当然地应该声明为 final,因为这样更容易推理代码,就像使用不可变类型一样使用它们更容易推理代码。
还有另一种观点认为,在任何地方添加 final
只是不必要的噪音,而且,如果您在无法判断值是否发生变化的地方编写方法,则说明您的方法太长了.
在很大程度上,将参数和局部变量设置为 final 归结为 personal/team 偏好。
将 x 和 y 变量声明为 final 解决了目的(即以后不得更改值)。将构造函数的参数声明为最终参数没有意义。
我无法理解为什么 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;
}
}
这些参数不需要是最终的。
将参数设为最终参数有两个原因:
- 在该函数中声明的内部 class 中使用它们;
- 为了防止它们的值被意外更改。
显然 (1) 不适用。
(2) 不是必需的,因为它是非常简单的代码,您可以看到它没有更改参数。
有一种学派认为所有参数和局部变量理所当然地应该声明为 final,因为这样更容易推理代码,就像使用不可变类型一样使用它们更容易推理代码。
还有另一种观点认为,在任何地方添加 final
只是不必要的噪音,而且,如果您在无法判断值是否发生变化的地方编写方法,则说明您的方法太长了.
在很大程度上,将参数和局部变量设置为 final 归结为 personal/team 偏好。
将 x 和 y 变量声明为 final 解决了目的(即以后不得更改值)。将构造函数的参数声明为最终参数没有意义。