10

我发现一个人可以做的真的很酷:

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: wrong number of arguments

我想知道是否仍然可以使用脚本和嵌套类调用命名参数参数样式。

问候

4

2 回答 2

10

似乎 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"
于 2013-02-19T18:54:26.483 回答
1

没有外部类的实例,非静态嵌套对象就不能存在。在java中也是一样。只需将嵌套对象更改为静态。

于 2018-08-03T18:09:18.813 回答