Ber*_*oël 3 java constructor cloneable
嘿我实际上是在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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想添加multiply()方法,该方法将按照指定的因子返回此向量*,
public void multiply(double factor) {
this.X *= factor;
this.Y *= factor;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用需要矢量的函数时,我想像它一样使用它
doSomething(ancientVector.multiply(-1D));
Run Code Online (Sandbox Code Playgroud)
但是jvm不满意,因为我发送给函数的arg是void...
我怎么能做到干净,我应该实现Cloneable或创建另一个构造函数的方式multiply吗?
doSomething(ancientVector.multiply(-1D));
Run Code Online (Sandbox Code Playgroud)
或者添加
public Vector(Vector previous, double mFactor) {
this.X *= previous.getX() * mFactor;
this.Y *= previous.getY() * mFactor;
}
Run Code Online (Sandbox Code Playgroud)
我会保持类不可变并返回一个新的Vector:
public Vector multiply(double factor) {
return new Vector(X * factor, Y * factor);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |