3
我有一個Groovy超類,看起來像:稱爲超類方法的Groovy類,用於訪問關閉
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」屬性應該沒有問題,但顯然我不正確。如果我想保持私密性,那麼做這個工作的適當方法是什麼?
dvcs是正確的,並且解決方法。將'nTimes.times {println str}'改爲'for(for in..nTimes){println str}' - 即:使用'for'循環而不是'times'閉包 - 工作 – 2012-03-06 15:23:34
for循環會執行稍好(也許10毫秒):) – 2012-03-06 15:26:35
啊,是的,謝謝。如果需要,我可以使用for循環。我也可以在閉包之外創建一個指向成員變量的局部變量,然後它也可以工作。 – 2012-03-06 15:28:18