2013-02-19 40 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