首页 > 解决方案 > 是否可以将新对象分配给“this”?

问题描述

我在类的构造函数中进行了一些计算,现在假设我想更改此类中的变量字段之一,这将影响之前进行的计算。

每次我调用任何set方法时,我都需要再次运行计算(或复制代码两次(这是错误的编码..))

我认为如果我可以如下所示,代码看起来会更好,我只是想知道它不能完成的原因是什么?

class Entity
{
    private int x,y,z;
    public Entity(int x,int y,int z)
    {
      Calculating();
    }
    private void Calculating()
    {
      // ... 
    }
    public void Set_X(int x)
    {
      this = new Entity(x,this.y,this.z)
    }
}

标签: javathis

解决方案


您不能将新对象分配给this。这总是引用当前对象。

为什么不直接设置 X 并调用Calculting()from 的方法Set_X?这将改变当前对象的状态。

如果您不想更改当前对象,例如由于对它的其他引用,您将必须创建一个新实例并将其从Set_X.


推荐阅读