我有一個Java方法需要3個參數,我希望它也有第4個「可選」參數。我知道Java不直接支持可選參數,所以我用第四個參數編碼,當我不想通過它時,我通過null
。 (然後該方法在使用前檢查null
。)我知道這是一種笨重的......但另一種方法是重載方法,這會導致相當多的重複。哪種模擬Java中的可選參數更好的方法?
哪種方法可以更好地在Java中實現可選的方法參數:使用可爲空的參數還是重載?爲什麼?
我有一個Java方法需要3個參數,我希望它也有第4個「可選」參數。我知道Java不直接支持可選參數,所以我用第四個參數編碼,當我不想通過它時,我通過null
。 (然後該方法在使用前檢查null
。)我知道這是一種笨重的......但另一種方法是重載方法,這會導致相當多的重複。哪種模擬Java中的可選參數更好的方法?
哪種方法可以更好地在Java中實現可選的方法參數:使用可爲空的參數還是重載?爲什麼?
寫一個單獨的3參數方法,轉發到4參數版本。不要雜亂無章。
有了這麼多的參數,你可能要考慮一個建設者或類似的。
又名超載 – 2010-03-17 15:14:00
我想這是最好的辦法。如果參數屬於同一類型,那麼您可以使用可變參數 - http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html – 2010-03-17 15:15:16
3參數方法應該如何轉發第四個參數...?空值?那麼這隻會消除部分問題 - 我仍然必須在4參數方法中進行空值檢查。它只是簡化了界面。也許最好讓4參數方法調用3參數方法,並在方法調用後用第4個參數做任何必要的額外處理? – froadie 2010-03-17 15:15:48
使用這樣的事情:
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
}
}
這可能是最好的回答這個問題 - http://stackoverflow.com/a/12994104/1385441 – 2013-12-19 11:36:01