嘿,我实际上正在使用 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/