我有一个很棒的父类(super class),看起来像:

class AGroovyClass { 
   private String str = "hello" 
   void printString(int nTimes) { 
     nTimes.times { println str }  
  }         
} 

和子类

class AGroovySubclass extends AGroovyClass { 
   // some other subclass methods 
} 

我的客户端代码调用:

new AGroovySubclass().printString(5) 

这实际上会破坏,因为它说 AGroovySubclass 没有这样的属性“str”

我本以为由于 printString 方法位于 AGroovyClass 中,因此访问“str”属性应该没有问题,但显然我错了。如果我想将“str”保持私有(private),那么合适的方法是什么?

请您参考如下方法:

这是一个带有私有(private)访问修饰符的老错误。如果你定义了 str protected ,它就会起作用。 https://issues.apache.org/jira/browse/GROOVY-2433

编辑:你能避免闭包,而是使用 for 循环吗?不太酷,但有效:)


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!