[ https://issues.apache.org/jira/browse/GROOVY-6979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King updated GROOVY-6979: ------------------------------ Fix Version/s: (was: 3.x) 4.x > metaClass.getMetaMethod doesn't find method with Class as an argument > --------------------------------------------------------------------- > > Key: GROOVY-6979 > URL: https://issues.apache.org/jira/browse/GROOVY-6979 > Project: Groovy > Issue Type: Sub-task > Components: groovy-runtime > Affects Versions: 2.1.9, 2.2.2, 2.4.0-beta-1, 2.3.5 > Reporter: Martin Schayna > Priority: Major > Fix For: 4.x > > > Method with argument of type Class cannot be found by > metaClass.getMetaMethod(): > {code:java} > class A { > // cannot be found by getMetaMethod > def met1(Class clazz) { > println clazz.name > } > // a workaround > def met2(List<Class> clazz) { > println clazz.get(0).name > } > } > A.metaClass.invokeMethod = { name, args -> > def metaMethod = delegate.metaClass.getMetaMethod(name, args) > if (metaMethod) { > metaMethod.invoke(delegate, args) > } else { > println "Method $name not found on $delegate" > } > } > def a = new A() > a.met1(A) // prints Method met1 not found on A@1c804... > a.met2([A]) // prints A > {code} > It could be caused by ambiguous nature of *getMetaMethod* which accepts array > of Object or Class as well, in case of Class as an argument it cannot find > method correctly. -- This message was sent by Atlassian Jira (v8.3.4#803005)