Groovy/Grails - Как получить экземпляр класса из String?
Я пытаюсь получить экземпляр класса класса groovy из имени строки.
Например, я хотел бы сделать код в следующих строках:
def domainName
domainName = "Patient"
// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);
Ответы
Ответ 1
Метод Grails будет использовать GrailsApplication # getArtefact. например.
def domainInstance = grailsApplication.getArtefact("Domain",domainName)?.
getClazz()?.get(1)
Преимущество этого метода в отличие от Class.forName
заключается в том, что если класс домена с этим именем отсутствует, getArtefact
просто возвращает значение null вместо исключения исключения.
Ответ 2
Это будет работать:
Class.forName("Patient", false, Thread.currentThread().contextClassLoader).get(1)
Ответ 3
Ну,
-
Попробуйте реализовать свой код с помощью пакетов
-
Попробуйте этот код: я не знаю, будет ли он работать нормально?
def domainInstance = Class.forName("Patient").newInstance()