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()