Groovy подкласс вызвал метод суперкласса, который обращается к закрытию - PullRequest
3 голосов
/ 06 марта 2012

У меня есть классный суперкласс, который выглядит так:

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)

И это на самом деле ломается, потому что говорит, что такого свойства "str" ​​для AGroovySubclass

нет

Я бы подумал, так как метод printString находится в AGroovyClass, у него не должно быть проблем с доступом к свойству "str", но, очевидно, я ошибаюсь. Если бы я хотел сохранить "str" ​​в секрете, как это сделать?

1 Ответ

5 голосов
/ 06 марта 2012

Это старая ошибка с модификатором частного доступа. Это работает, если вы определили str protected. http://jira.codehaus.org/browse/GROOVY-2433

edit: Можете ли вы избежать закрытия, вместо этого используйте цикл for? Не очень круто, но работает:)

...