所以我正在写我的俄罗斯方块版本。这是我想做什么:在一行中多次引用一个对象
screen[0][1].setColor(Color.RED); screen[0][1].setStatus(1);
有没有办法在只有一行做到这一点?
所以我正在写我的俄罗斯方块版本。这是我想做什么:在一行中多次引用一个对象
screen[0][1].setColor(Color.RED); screen[0][1].setStatus(1);
有没有办法在只有一行做到这一点?
只是为了完成相同的操作,您可以将方法setColor()
和setStatus()
更改为返回this
。喜欢的东西:
public MyObj setColor(int color) {
this.color = color;
return this;
}
但我不会这么做,它似乎并不像一个很好的模式,除非有其他方法遵循相同的方法。
有几个选项映入脑海:
写的方法在任何类,这是它知道这两个状态和颜色:
// Implicitly sets color to red. Consider using an enum for statuses
screen[0][1].setStatus(1);
写一个方法接受状态和颜色参数:
screen[0][1].setColorAndStatus(Color.RED, 1);
让setColor
和setStatus
(以及其他制定者)返回this
这样你就可以把它们连:
screen[0][1].setColor(Color.RED).setStatus(1);
放弃“都在一个声明”的想法(这是我认为你的真正用意 - 你可以放两个在一行语句,如果你真的想,但我不建议你这样做),实际上写声明:
Tile tile = screen[0][1];
tile.setColor(Color.RED);
tile.setStatus(1);
直接的可能性。
如果为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);
如果能够编辑类,也有我们这里至今:)
可能的方法可以是任何人别人给的很多其他方式:
也试试吧
(screen[0][1].setColor(Color.RED)).setStatus(1);
你可以制定一种方法,将二者合并为一个以备未来调用。 – Wold
重写'setColor'和/或'setStatus'方法返回'this'。然后它是'screen [0] [1] .setColor(Color.RED).setStatus(1)'。真正的问题是:你为什么需要?我严重怀疑你遇到了这两行的性能问题,并保持它们的可读性和可读性=) –
Whoa @ Mike'Pomax'Kamermans非常聪明。我想它确实没有完成任何事情。 – Matthew