2012-12-27 42 views
-1

有沒有人看到我在這裏做錯了什麼,我得到這個錯誤「方法giveTea在類型Guest中不適用於參數(void)我的英語不好的XD,所以這是什麼意思。java setter,不適用於參數(void)

Guest alice = new Guest(); 
alice.giveTea. (new Tea().setName("Roseship Tea")); 
alice.giveTea. (new Tea().setSugar(false)); 
alice.giveTea. (new Tea().setMilk(true));' 
+0

嗯,*八九不離十*看起來像Java,我想...... –

+0

如果你想用你的setter方法鏈接,你可以在所有「這種」回報您的實例你的二傳手...... – frictionlesspulley

+0

'giveTea'是'Guest'類的領域嗎?還是一種方法?我想不出任何會解析alice.giveTea的語言(參數...如果它是一種方法(注意'giveTea'後面的點),我認爲不應該有點 - 因爲它是可能是一種方法 – Xeon

回答

1

二傳手返回空隙,而不是實例本身。你應該做這種方式

Guest alice = new Guest(); 
Tea tea = new Tea(); 
tea.setName("Roseship Tea"); 
tea.setSugar(false); 
tea.setMilk(true); 
alice.giveTea(tea); 
0

new Tea().setName("Rosehip Tea")返回類型爲void因爲setName()做不返回任何東西。這樣做:

Tea t = new Tea(); 
t.setName("Rosehip Tea"); 
0

setter方法通常具有返回類型void。該方法可能是茶。 你在做什麼是創建一個對象並一起添加屬性。你應該分割這個或創建一個構造函數,馬上設置一些屬性。

後者是一種好方法,因爲Tea對象在創建之後應該是一個不可變的對象。因此,它的設計應該是這樣的:

public class Tea{ 
private final String teatype; 
private final boolean sugar; 

public Tea(String pType, boolean pSugar){ 
    teatype = pType; 
    sugar = pSugar; 
} 

public String getTeatype(){ 
    return teatype; 
} 
.... 

}