【问题标题】:Groovy / Grails - How to get class instance from String?Groovy / Grails - 如何从字符串中获取类实例?
【发布时间】:2010-01-13 15:48:35
【问题描述】:

我正在尝试从字符串的名称派生一个 groovy 类的类实例。

例如,我想按照以下方式编写一些代码:

def domainName

domainName = "Patient"

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

【问题讨论】:

    标签: class grails groovy


    【解决方案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)
      

      【讨论】:

      • 我在找什么,但下一个涵盖了 null。还是谢谢!
      【解决方案3】:

      嗯,

      1. 尝试使用包来实现您的代码

      2. 试试这个代码:不知道行不行?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-16
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        相关资源
        最近更新 更多