2012-10-01 26 views
0

的方法在我的程序之前檢查參數的數目,我有低於的方法;調用Java中

private void foo(String title, String[] subtitles, int ... subtitleValues) 

我的要求是;

  • 字幕數和字幕值必須相等。用戶可以發送任意數量的字幕和字幕值,但正如我所說的相同數量的字幕和字幕值。

我不想拿這兩個參數,並檢查他們的計數foo功能,說出你的表不能因爲不平等的字幕和subtitleValues的創建。我想要的是;防止用戶發送不平等的論據。我怎樣才能做到這一點?

在此先感謝

PS:我沒有找到一個適當的標題,所以如果你有,請隨時更改它。

+3

這不是編譯器支持的功能。您只能在運行時執行此操作,除非您編寫自己的編譯器。由於您的代碼將被正確測試;),您可以合理確信這不會在生產中產生錯誤。 –

+0

一種方法是檢查它被稱爲方法之前,但我得到的是不是你在找什麼感覺:P – keyser

回答

4

你不能像這樣做。你可以讓你的方法更難錯誤地稱之爲是使用流利的API像這樣的建設者:

class FooBuilder { 
    public static FooBuilder withTitle(String title); 
    public FooBuilder withSubtitle(String subtitle, int subtitleValue); 
    public Foo build(); 
} 

我離開了爲簡潔的實現。那麼你可以這樣稱呼它:

Foo foo = FooBuilder.withTitle("MyTitle").withSubtitle("st1", 1).withSubtitle("st2", 2).build(); 
+0

這個人是不是2的原因其他的解決方案更好:易於閱讀,無圖/收集instanciation之前打電話。我喜歡 :) – TecHunter

2

創建包含字幕,subtitleValue對一個類。讓你的方法接受這個類的實例的可變參數(或列表或數組)。

0

在這種情況下,你應該創建可能單獨的類字幕代表字幕。並創建適當的構造函數或方法逐個添加字幕。

然後修改你的foo的方法:

private void foo(String title, List<Subtitle> subtitles)