从变量动态调用方法

时间:2017-05-15 01:15:09

标签: groovy thumbor

我在我的项目中使用此SDK:Pollexor

我想创建一个通用/ main方法来接受来自其他方法的任何请求。

static String thumborGetURL(String alias, String imageUrl) {
    thumborUrlBuilder( alias, imageUrl )
            .crop( 299, 296, 301, 297 )
            .resize( 300, 300 )
            .toUrl()
}

private static ThumborUrlBuilder thumborUrlBuilder(String alias, String imageUrl) {
    Thumbor thumbor = Thumbor.create( 'http://localhost:8000', 'MY-SECURITY-KEY' )
    thumbor.buildImage( imageUrl )
}

static String thumborCrop(String alias, String imageUrl) {
    thumborGetURL( alias, imageUrl )
}

如何从一个Map类型的变量动态调用SDK中的.crop,.resize,.toUrl和其他方法及其参数,例如?这可能吗?

1 个答案:

答案 0 :(得分:1)

如果你有方法名和它的参数,你可以尝试以下方法:

def method(String a, String b) {
    println "a: $a, b: $b"
}

def args = ['c', 'd']
def name = 'method'

"$name"(*args)

如果list的参数length无效,则抛出异常。