在groovy中,你如何动态调用一个类的静态方法?
问题描述:
在groovy中,你如何动态调用一个类的静态方法?在groovy中,你如何动态调用一个类的静态方法?
void callMethod(Class c, String staticmethodname){
//what goes here to call the static method of class c?
}
答
瞧
void callMethod(Class c, String staticmethodname){
c."$staticmethodname"()
}
class test {
static someMethod() {
println "me"
}
}
callMethod(test, "someMethod")
答
你肯定能做到这一点的Java的方式:
c.getMethod(staticmethodname).invoke(null);
答
你可以这样说:
def callMethod(Class c, String staticmethodname, args = null) {
args ? c."$staticmethodname"(args) : c."$staticmethodname"()
}
println callMethod(String.class, 'valueOf', 1)
println callMethod(Calendar.class, 'getInstance')
似乎不在常规控制台工作。 – mfloryan 2010-12-17 20:54:47
正确的版本是:c.getMethod(staticmethodname).invoke(null); – mfloryan 2010-12-17 20:56:24
正确。现在它在控制台中工作 – Bozho 2010-12-17 20:58:12