2010-03-17 92 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 
    } 

}