在groovy中,如何动态调用类的静态方法?

在groovy中,如何动态调用类的静态方法?,groovy,Groovy,在groovy中,如何动态调用类的静态方法 void callMethod(Class c, String staticmethodname){ //what goes here to call the static method of class c? } 您当然可以通过java方式来实现: c.getMethod(staticmethodname).invoke(null); 瞧 您可以这样做: def callMethod(Class c, String staticmeth

在groovy中,如何动态调用类的静态方法

void callMethod(Class c, String staticmethodname){
     //what goes here to call the static method of class c?
}

您当然可以通过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' )

正确的版本应该是: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' )