Groovy中的动态方法调用

时间:2015-04-20 10:05:55

标签: dynamic methods groovy

我想根据参数代码在方法上调用 method1 method2 是否为空

void add(def code, def index) {
    method(index).((code != null) ? "method1"(code) : "method2"())
}

但没有任何反应?我哪里错了? 如果我写

method(index)."method1"(code)

有效,但无法使三元运算符正常工作。

1 个答案:

答案 0 :(得分:4)

你可以这样做:

void add(def code, def index) {
    method(index).with { m ->
        (code != null) ? m."method1"(code) : m."method2"()
    }
}

或者(正如@IgorArtamonov在上面的评论中指出的那样):

void add(def code, def index) {
    (code != null) ? method(index)."method1"(code) : method(index)."method2"()
}