2011-02-05 98 views
3

有沒有在Java中的方法來聲明一個方法參數,那就是某種集合,但有限的尺寸?java方法參數可以是聲明大小的集合嗎?

例如,是這樣的:

public Car(String colour, Wheel[4]) 

這表明汽車可以構造一個給定顏色和正好4個輪子。 (顯然這個特殊的例子可以通過改變枚舉方法來實現,通過4個輪子作爲單獨的參數,但是這並不能縮放)

看起來這些類型的約束應該可以通過方法頭來表達,但我只是不能認爲java將如何允許它。

回答

5

沒有,有沒有在類型系統,讓這一點。當然,您可以在執行時進行驗證 - 這是您通常必須執行的操作,否則語言將很難提供規則,確保數組長度完全正確。 (如在.NET代碼合同項目將允許這樣的事情來表達,但是這不是語言本身的一部分...等並不需要精確規範。)

+1

合同,http://code.google.com/p/cofoja – ide 2011-02-05 08:51:52

+2

*咳嗽* ADA或PASCAL說起? *咳嗽* – 2011-02-05 08:58:43

1

號檢查參數在運行時快速失敗的:

public Car(String colour, Wheel[] wheels){ 
    if (wheels == null) 
     throw new NullPointerException("The wheels is null."); 
    if (wheels.length != 4) 
     throw new IllegalArgumentException("The length of wheels is "+wheels.length); 
... 
} 
2

您可以通過創建特定的目錄中新類包裝Wheel[4]。現在