[英]Immutable object initialisation in JAVA
使用以下代码时,如何创建“不可变”类“目标”的对象:
Aim a = new Aim(2,3).coordinateChange(2,1).scale(0.5);
因此,“ a”将使用(2,2)点坐标进行初始化-ordinateChange应将值添加到x,y坐标中-比例应缩放它们,即在上面的示例中为50%
我知道如何在没有不可变类的情况下执行此操作,但不知道如果上述代码用于初始化最终对象,则该类应如何显示。
由于您无法更改所创建的原始对象,因此必须使每个coordinateChange
和scale
方法都返回一个新的Aim
对象。 这意味着您的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);
}
您可以看到每个方法都包含new Aim( ...
,因此实际上是在创建一个全新的对象。
每个方法中提到的x
和y
是Aim
类的字段,因此,如果对它们使用不同的名称,则可能要重命名它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.