2013-02-19 14 views
6

は、私は1つが行うことができます本当にクールました。私はクラスの束を持つファイルがある場合は好き:なGroovy:私のファイル名はクラス名と一致した場合、それはのみ動作し、</p> <pre><code>class Foo { String name } def foo = new Foo(name:"Test") </code></pre> <p>しかし:名前付きパラメータコンストラクタ

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

右だし、それはちょっと:(を吸う私はグルーヴィー開発者がのトンを持っていると確信しています。その理由はありますが、名前付きのパラメータだけでなく、コンストラクタが動作しないことがわかった。 –

+9

@FuriousBobネストされたクラスを静的にすると、インスタンスを作成せずにインスタンスを作成できるはずです外部クラスの –

関連する問題