2013-02-19 16 views
6

znalazłam naprawdę fajne, że można zrobić:Groovy: nazwanych konstruktorów parametrów

class Foo { 
    String name 
} 

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

Ale to działa tylko wtedy, gdy moja nazwa pliku jest zgodna z nazwą klasy. Jeśli mam plik z pęczek klas jak:

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

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

Teraz to już nie działa dostaję java.lang.IllegalArgumentException: zły numer argumentów

Zastanawiam się, czy nadal jest możliwe aby wywołać styl argumentu nazwanego parametru za pomocą skryptów i klas zagnieżdżonych.

Pozdrowienia

Odpowiedz

6

Wygląda Groovy potrzebuje wyraźnego odniesienia do instancji zewnętrznej Klasa:

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

to prawda, a to trochę ssie :(Jestem pewien Groovy programiści mają mnóstwo. z tego powodu, ale dowiedziałem się, że nie tylko parametry nazwane nie działają, żaden konstruktor nie zadziała, dzięki za pomoc: –

+9

@FuriousBob Jeśli utworzysz zagnieżdżone klasy statyczne, powinieneś być w stanie je utworzyć bez tworzenia instancji z klasy zewnętrznej. –

Powiązane problemy