繁体   English   中英

JAVA中的不可变对象初始化

[英]Immutable object initialisation in JAVA

使用以下代码时,如何创建“不可变”类“目标”的对象:

Aim a = new Aim(2,3).coordinateChange(2,1).scale(0.5);

因此,“ a”将使用(2,2)点坐标进行初始化-ordinateChange应将值添加到x,y坐标中-比例应缩放它们,即在上面的示例中为50%

我知道如何在没有不可变类的情况下执行此操作,但不知道如果上述代码用于初始化最终对象,则该类应如何显示。

由于您无法更改所创建的原始对象,因此必须使每个coordinateChangescale方法都返回一个新的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( ... ,因此实际上是在创建一个全新的对象。

每个方法中提到的xyAim类的字段,因此,如果对它们使用不同的名称,则可能要重命名它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM