2014-04-12 24 views
1

所以我正在写我的俄罗斯方块版本。这是我想做什么:在一行中多次引用一个对象

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

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

+0

你可以制定一种方法,将二者合并为一个以备未来调用。 – Wold

+3

重写'setColor'和/或'setStatus'方法返回'this'。然后它是'screen [0] [1] .setColor(Color.RED).setStatus(1)'。真正的问题是:你为什么需要?我严重怀疑你遇到了这两行的性能问题,并保持它们的可读性和可读性=) –

+0

Whoa @ Mike'Pomax'Kamermans非常聪明。我想它确实没有完成任何事情。 – Matthew

回答

0

只是为了完成相同的操作,您可以将方法setColor()setStatus()更改为返回this。喜欢的东西:

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

但我不会这么做,它似乎并不像一个很好的模式,除非有其他方法遵循相同的方法。

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); 
    
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); 

如果能够编辑类,也有我们这里至今:)

0

可能的方法可以是任何人别人给的很多其他方式:

也试试吧

(screen[0][1].setColor(Color.RED)).setStatus(1); 
相关问题