我有一个方法如下:
void display(def a = null, def b = null) {
// user provides either value for a, or b
// if he gives value for a, it will be used
// if he gives value for b, it will be used
// not supposed to provide values for both a and b
}
我的问题是,用户应该如何为b提供价值?
如果我使用
display(b = 20)
它为a
分配20,这是我不想要的。
完成此任务的唯一方法是调用如下?
display(null, 20)
答案 0 :(得分:0)
使用可选参数,是的,您必须致电display(null, 20)
。但您也可以定义接受Map
的方法。
void display(Map params) {
if(params.a && params.b) throw new Exception("A helpful message goes here.")
if(params.a) { // use a }
else if(params.b) { // use b }
}
然后可以像这样调用该方法:
display(a: 'some value')
display(b: 'some other value')
display(a: 'some value', b: 'some other value') // This one throws an exception.