2014-04-12 22 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); 
相關問題