2013-02-19 56 views
6

我发现真的很酷,一个可以做:Groovy:在命名参数的构造函数

class Foo { 
    String name 
} 

def foo = new Foo(name:"Test") 

但是,这只有当我的文件名匹配的类名的作品。如果我有一堆的类文件,如:现在

class AllClassesInOneFile { 
    class Bar {} 
    class Foo { 
     String name 
    } 
} 

def foo = new Foo(name:"Test") 

,它不工作了,我得到了java.lang.IllegalArgumentException:错误的参数数目

我不知道,如果它仍然是可能的用脚本和嵌套类调用命名参数参数样式。

问候

回答

6

好像Groovy中需要明确提及外部类的一个实例:

class Baz { 
    class Bar {} 
    class Foo { 
     String name 
    } 
} 

def baz = new Baz() 

def f = new Baz.Foo(baz, [name: "john doe"]) 

assert f.name == "john doe" 
+0

这是正确的,而且还挺吮吸:(我敢肯定,Groovy开发有一吨重的。但我发现不仅命名参数不起作用任何构造函数都不起作用感谢您的帮助 – 2013-02-19 19:20:05

+9

@FuriousBob如果您使嵌套类为静态,您应该能够创建它们而不创建实例的外部类。 – 2013-02-20 16:37:33