Groovy / Grails - Как получить экземпляр класса из String? - PullRequest
11 голосов
/ 13 января 2010

Я пытаюсь извлечь экземпляр класса Groovy из имени строки.

Например, я хотел бы сделать некоторый код следующим образом:

def domainName

domainName = "Patient"

// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);  

Ответы [ 3 ]

23 голосов
/ 13 января 2010

В Grails можно использовать GrailsApplication # getArtefact . например.,

def domainInstance = grailsApplication.getArtefact("Domain",domainName)?.
        getClazz()?.get(1)

Преимущество такого способа по сравнению с Class.forName состоит в том, что если не существует класса домена с таким именем, getArtefact просто возвращает ноль вместо выдачи исключения.

2 голосов
/ 13 января 2010

Это будет работать:

   Class.forName("Patient",  false, Thread.currentThread().contextClassLoader).get(1)
0 голосов
/ 13 января 2010

Ну

  1. Попробуйте реализовать свой код с помощью пакетов

  2. Попробуйте этот код: я не знаю, будет ли он работать нормально?

def domainInstance = Class.forName("Patient").newInstance()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...