这是我的代码,我尝试调用内部类中的方法,如下所示(最后一行,ic = new oc.Inner())。但我收到错误。
我正在使用groovy控制台,根据groovy文档,我希望内部类可以从外部类调用。我不确定语法。
class Outer {
private String privateStr = 'some string'
def callInnerMethod() {
new Inner().methodA()
}
class Inner {
def methodA() {
println "${privateStr}."
}
}
}
Outer oc = new Outer()
ic = new oc.Inner()
这就是我得到的结果:
startup failed:
Script1.groovy: 14: unable to resolve class oc.Inner
@ line 14, column 6.
ic = new oc.Inner()
^
1 error
def oc = new Outer()
def ic = new Outer.Inner(oc)
https://groovy-lang.org/differences.html#_creating_instances_of_non_static_inner_classes
这个怎么样:
def ic = new Outer.Inner()
这可能仅在您的内部类是静态的情况下才有效。
@hayfreed 是这么说的,试试这个:
class Outer {
private String privateStr = 'some string'
public static def callInner() {
new Outer.Inner()
}
private static class Inner {
def methodA() {
println "${privateStr}."
}
}
}
println(Outer.callInner().methodA())