构造函数中的最终 double java

final double in constructor java

我无法理解为什么 double xxyy 被放在构造函数中 final。为什么我不把它们放在 double xxdouble 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; 
 }

}

这些参数不需要是最终的。

将参数设为最终参数有两个原因:

  1. 在该函数中声明的内部 class 中使用它们;
  2. 为了防止它们的值被意外更改。

显然 (1) 不适用。

(2) 不是必需的,因为它是非常简单的代码,您可以看到它没有更改参数。

有一种学派认为所有参数和局部变量理所当然地应该声明为 final,因为这样更容易推理代码,就像使用不可变类型一样使用它们更容易推理代码。

还有另一种观点认为,在任何地方添加 final 只是不必要的噪音,而且,如果您在无法判断值是否发生变化的地方编写方法,则说明您的方法太长了.

在很大程度上,将参数和局部变量设置为 final 归结为 personal/team 偏好。

将 x 和 y 变量声明为 final 解决了目的(即以后不得更改值)。将构造函数的参数声明为最终参数没有意义。