在Java中,是否可以从其类的方法中更改Object实例?我想做这样的事情:
public void setMix(MyColor[] colors){
MyColor colorMix = MyColor.colorMixer(colors);
// Instead of this
this.red = colorMix.getRed();
this.blue = colorMix.getBlue();
this.green = colorMix.getGreen();
// I would like to do something like:
// this = colorMix;
// which is not allowed
}
public static MyColor colorMixer(MyColor[] colors){
int red = 0;
int green = 0;
int blue = 0;
...
// Here I work with the colors array to compute three new components
return new MyColor(red, green, blue);
}
有什么好办法吗?非常感谢!
[我确定这个问题之前应该已经回答过,但是我找不到它,很抱歉,是这样]
最佳答案
您尝试执行的操作(重新分配this
)是不可能的,至少在Java中是不可能的。
假设您有以下 class :
class Foo {
MyColor color;
public Foo(Mycolor color) {
this.color = color;
}
}
以及以下实例:
MyColor color = new MyColor();
Foo foo = new Foo(color);
假设您可以以某种方式在MyColor中重新分配
this
,那么您将获得的是MyColor的新实例,但是foo.color
仍然指向旧的MyColor实例。相反,您可以做的就是让颜色实例更改其内部状态。这样,持有该颜色实例引用的所有其他对象将具有“新”颜色对象。