В консоли Groovy следующий код выполняется без ошибок:
class F {
private def getFoo() {"foo"}
private def barValue = "bar"
}
def f = new F()
assert f.barValue == "bar"
assert f.properties.containsKey("foo")
Это означает, что:
- Можно получить доступ к закрытым членам классов вне класса
- Свойства класса получены из закрытых (и общедоступных) методов получения / установки
Мне кажется, что оба они являются чрезвычайно серьезными языковыми ошибками. Хотя мне действительно нравится Groovy, я нахожу невероятным, что язык, который существовал достаточно долго, не реализовал чего-то столь фундаментального, как концепция конфиденциальности правильно.
Это действительно ошибки или я что-то упустил?
Спасибо,
Дон