Ответ Этот вопрос о способе Groovy для динамического вызова статического метода был очень полезен, но у меня возникли проблемы со следующим случаем:
Я определил простой класс Groovy:
class Item {
def id = 1
def data = [ "a", "b" ]
}
Затем я определил простой класс утилиты, который хочет динамически загружать класс Item:
class Util {
static def main(args) {
def cls = "Item" as Class
def instance = cls.newInstance()
println instance.toString()
}
}
Util.groovy находится в той же папке, что и Item.groovy
Когда я пытаюсь запустить Util.groovy, я получаю следующую ошибку:
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object 'Item' with class 'java.lang.String'
to class 'java.lang.Class' due to:
java.lang.ClassNotFoundException: Item
at Util.main(Util.groovy:3)
Единственным способом, с помощью которого я мог бы работать, было использование groovyc для прекомпиляции Item.groovy, но это не соответствует точке Groovy:)