如何调用groovy内部类

问题描述 投票:0回答:3

这是我的代码,我尝试调用内部类中的方法,如下所示(最后一行,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
groovy-console
3个回答
1
投票

0
投票

这个怎么样:

def ic = new Outer.Inner()

这可能仅在您的内部类是静态的情况下才有效。


0
投票

@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())
© www.soinside.com 2019 - 2024. All rights reserved.