所以我正在寫我的俄羅斯方塊版本。這是我想做什麼:在一行中多次引用一個對象
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