Я быстро пошел (избавился от бита журнала и заменил его на println, так как в моих тестах не было настроено журналов), и я придумал, что не требуется перегруженных версий invokeGroovyScriptMethod:
Object invokeGroovyScriptMethod( String name, Object... args = null ) {
try {
args ? groovyObject."$name"( args.flatten() ) : groovyObject."$name"()
} catch( exception ) {
if( exception instanceof MissingMethodException ) {
println "invokeGroovyScriptMethod: $exception.message"
} else {
throw exception;
}
}
}
groovyObject = 'hi'
assert 'HI' == invokeGroovyScriptMethod( 'toUpperCase' )
assert 'i' == invokeGroovyScriptMethod( 'getAt', 1 )
assert '***hi' == invokeGroovyScriptMethod( 'padLeft', 5, '*' )
// Assert will pass (as we catch the exception, print the error and return null)
assert null == invokeGroovyScriptMethod( 'shouldFail' )
редактировать
Просто прочитайте вопрос еще раз, и вы говорите, что это класс Java? Но тогда подвох, кажется, указывает на то, что это Groovy-код ...
Боюсь, что, возможно, я отправил вас по неверному пути, если это Java ...