一行中多次引用一个对象

时间:2014-04-12 06:15:13

标签: java object space-efficiency

所以我正在编写我的俄罗斯方块版本。这就是我想做的事情:

screen[0][1].setColor(Color.RED); screen[0][1].setStatus(1);

有没有办法只在一行中做到这一点?

4 个答案:

答案 0 :(得分:3)

我想到了一些选择:

  • 在任何知道状态颜色的类中写一个方法:

    // Implicitly sets color to red. Consider using an enum for statuses
    screen[0][1].setStatus(1); 
    
  • 编写一个接受状态和颜色参数的方法:

    screen[0][1].setColorAndStatus(Color.RED, 1);
    
  • setColorsetStatus(以及其他设置者)返回this,以便将它们链接起来:

    screen[0][1].setColor(Color.RED).setStatus(1);
    
  • 放弃“一体化声明”的想法(这就是我认为你真正的意思 - 如果你真的想要,你可以在一行上放两个陈述,但我不是建议您这样做并实际编写三个语句:

    Tile tile = screen[0][1];
    tile.setColor(Color.RED);
    tile.setStatus(1);
    

答案 1 :(得分:0)

为了完成此操作,您可以更改方法setColor()setStatus()以返回this。类似的东西:

public MyObj setColor(int color) {
    this.color = color;
    return this;
}

但我不会这样做,它看起来不是一个好的模式,除非其他方法采用相同的方法。

答案 2 :(得分:0)

直接的可能性。

如果setColor方法返回类型为screen[0][1]的对象,则可以执行

screen[0][1].setColor(Color.RED).setStatus(1);
  • 没有

如果setColor方法返回类型为void。然后唯一的方法是

screen[0][1].setColor(Color.RED);
screen[0][1].setStatus(1);

如果你能够编辑课程,到目前为止我们还有很多其他方法:)

答案 3 :(得分:0)

可能的方法可以是其他人给出的:

也试试

(screen[0][1].setColor(Color.RED)).setStatus(1);