2010-03-17 39 views
3

我有一個Java方法需要3個參數,我希望它也有第4個「可選」參數。我知道Java不直接支持可選參數,所以我用第四個參數編碼,當我不想通過它時,我通過null。 (然後該方法在使用前檢查null。)我知道這是一種笨重的......但另一種方法是重載方法,這會導致相當多的重複。哪種模擬Java中的可選參數更好的方法?

哪種方法可以更好地在Java中實現可選的方法參數:使用可爲空的參數還是重載?爲什麼?

+0

這可能是最好的回答這個問題 - http://stackoverflow.com/a/12994104/1385441 – 2013-12-19 11:36:01

回答

10

寫一個單獨的3參數方法,轉發到4參數版本。不要雜亂無章。

有了這麼多的參數,你可能要考慮一個建設者或類似的。

+2

又名超載 – 2010-03-17 15:14:00

+1

我想這是最好的辦法。如果參數屬於同一類型,那麼您可以使用可變參數 - http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html – 2010-03-17 15:15:16

+2

3參數方法應該如何轉發第四個參數...?空值?那麼這隻會消除部分問題 - 我仍然必須在4參數方法中進行空值檢查。它只是簡化了界面。也許最好讓4參數方法調用3參數方法,並在方法調用後用第4個參數做任何必要的額外處理? – froadie 2010-03-17 15:15:48

4

使用這樣的事情:

public class ParametersDemo { 

    public ParametersDemo(Object mandatoryParam1, Object mandatoryParam2, Object mandatoryParam3) { 
    this(mandatoryParam1,mandatoryParam2,mandatoryParam3,null); 
    } 


    public ParametersDemo(Object mandatoryParam1, Object mandatoryParam2, Object mandatoryParam3, Object optionalParameter) { 
    //create your object here, using four parameters 
    } 

}