Reflection groovy中如何通过字符串名调用构造函数

Reflection groovy中如何通过字符串名调用构造函数,reflection,groovy,instantiation,Reflection,Groovy,Instantiation,我们知道可以通过字符串名调用方法 class Person { String profile(){} } 因此: String method='profile' new Person()."$method"() 这工作! 然而 Class context='my.package.Person' as Class ; new context() 不起作用 下面的尝试也是如此: def map=['person':my.package.Person] new map

我们知道可以通过字符串名调用方法

class Person {
    String profile(){}
}
因此:

String method='profile'
new Person()."$method"()
这工作!
然而

 Class context='my.package.Person' as Class ;
 new context()  
不起作用

下面的尝试也是如此:

  def map=['person':my.package.Person]
   new map['person']()
  • 有什么想法吗

您可以使用与java本身相同的方法来实现这一点(只是更短,因为它是groovy!)

或者用你的最后一个例子:

def map=['person':my.package.Person]
map['person'].newInstance()
map['person'].newInstance(name: "Duffy")

在类上调用
newInstance()
。纯java。我认为这部分已经很清楚了,只有“新”部分没有。谢谢你提高了答案。
def map=['person':my.package.Person]
map['person'].newInstance()
map['person'].newInstance(name: "Duffy")