在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实例。

相反,您可以做的就是让颜色实例更改其内部状态。这样,持有该颜色实例引用的所有其他对象将具有“新”颜色对象。

10-02 06:47