gpt4 book ai didi

Java - 实现 Cloneable 或添加构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:43 25 4
gpt4 key购买 nike

嘿,我实际上正在使用 Java 上的自定义 Vector 类,

public class Vector {

private double X;
private double Y;

public Vector(double x, double y) {
this.X = x;
this.Y = y;
}

public void setX(double x) {
this.X = x;
}
public double getX(double x) {
return this.X;
}

public void setY(double y) {
this.Y = y;
}
public double getY(double y) {
return this.Y;
}

}

我想添加 multiply() 方法,它会像这样按指定的因子返回此 vector *,

public void multiply(double factor) {
this.X *= factor;
this.Y *= factor;
}

问题是,当我使用需要 vector 的函数时,我想像这样使用它

doSomething(ancientVector.multiply(-1D));

但是 jvm 不满意,因为我发送给函数的 arg 是一个 void...

我该怎么做才能让它变得干净,我应该实现 Cloneable 还是创建另一个按照 multiply 的方式工作的构造函数?

doSomething(ancientVector.multiply(-1D));

或添加

public Vector(Vector previous, double mFactor) {
this.X *= previous.getX() * mFactor;
this.Y *= previous.getY() * mFactor;
}

最佳答案

我会保持类不可变并返回一个新的Vector:

public Vector multiply(double factor) {
return new Vector(X * factor, Y * factor);
}

关于Java - 实现 Cloneable 或添加构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com