我发现一个人可以做的很酷:
class Foo {
String name
}
def foo = new Foo(name:"Test")
Run Code Online (Sandbox Code Playgroud)
但是,它仅在我的文件名与类名匹配时才有效.如果我有一个包含一堆类的文件,例如:
class AllClassesInOneFile {
class Bar {}
class Foo {
String name
}
}
def foo = new Foo(name:"Test")
Run Code Online (Sandbox Code Playgroud)
现在,它不再起作用我得到一个java.lang.IllegalArgumentException:错误的参数数量
我想知道是否仍然可以使用脚本和嵌套类调用命名参数参数样式.
问候
看起来像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"
Run Code Online (Sandbox Code Playgroud)