JAVA中的不可变对象初始化
使用以下代码时,如何创建“不可变”类“Aim”的对象: 目标a=新目标(2,3)。协调变化(2,1)。量表(0.5) 所以“a”用(2,2)点坐标初始化 --坐标更改应将值添加到x、y坐标 --在上述示例中,比例应为50%JAVA中的不可变对象初始化,java,class,object,immutability,Java,Class,Object,Immutability,使用以下代码时,如何创建“不可变”类“Aim”的对象: 目标a=新目标(2,3)。协调变化(2,1)。量表(0.5) 所以“a”用(2,2)点坐标初始化 --坐标更改应将值添加到x、y坐标 --在上述示例中,比例应为50% 我知道如何在没有不可变类的情况下实现这一点,但不知道如果要使用上述代码初始化最终对象,该类应该是什么样子。您必须使每个协调更改和缩放方法返回一个新的目标对象,因为您无法更改您创建的原始对象。这意味着您的Aim类必须包含以下内容 public Aim coordinateCha
我知道如何在没有不可变类的情况下实现这一点,但不知道如果要使用上述代码初始化最终对象,该类应该是什么样子。您必须使每个
协调更改
和缩放
方法返回一个新的目标
对象,因为您无法更改您创建的原始对象。这意味着您的Aim
类必须包含以下内容
public Aim coordinateChange(double changeInX, double changeInY) {
return new Aim(x + changeInX, y + changeInY);
}
public Aim scale(double scaleFactor) {
return new Aim(x * scaleFactor, y * scaleFactor);
}
您可以看到,这些方法中的每一个都包含新目标(…
),因此实际上是在创建一个全新的对象
每个方法中提到的x
和y
都是Aim
类的字段,因此如果使用不同的名称,可能需要重命名这些字段