2010-12-17 64 views

回答

7

void callMethod(Class c, String staticmethodname){ 
    c."$staticmethodname"() 
} 

class test { 
    static someMethod() { 
    println "me" 
    } 
} 

callMethod(test, "someMethod") 
2

你肯定能做到这一点的Java的方式:

c.getMethod(staticmethodname).invoke(null); 
+0

似乎不在常规控制台工作。 – mfloryan 2010-12-17 20:54:47

+0

正确的版本是:c.getMethod(staticmethodname).invoke(null); – mfloryan 2010-12-17 20:56:24

+0

正确。现在它在控制台中工作 – Bozho 2010-12-17 20:58:12

2

你可以这样说:

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') 
相关问题