Вопрос по private, private-members, groovy – Частный метод в Groovy не является частным

14
class A {
    private def sayHello() {
       println "Anish"
    } 
 }

 def a_obj = new A()
 a_obj.sayHello()

выход :Anish

Есть ли способ защититьsayHello() в заводной или я что-то упустил?

возможный дубликатЧто значит «частный» в Groovy? Andrey Adamovich

Ваш Ответ

5   ответов
3
9

[groovy] private показывает:

Groovy вызов частного метода в суперклассе Java

Что значит «частный» в Groovy?

Как определить частный метод получения в Groovy Bean?

Непонятно, если это ошибка или дизайн, но на Groovy 2.0 это снова будет рассмотрено.

Поведение такое же в Groovy 2.0. user235273
@kadaj это теперь запланировано посмотреть на Groovy 3 ;-) tim_yates
0

это может быть ошибка в Groovy. Я придерживался простого соглашения о добавлении префиксов имен частных членов с начальным подчеркиванием (аналогично Python), чтобы обозначить его как закрытый, что помогает мне понять с точки зрения клиента, что я должен называть.

17

дефект на том, что в Groovy система отслеживания проблем и этот дефект все еще открыт.

7

в основном так же, как вы делали бы скрытие информации с помощью Javascript.

package test

class FunctionTests {

    def privilagedObj = {

        def privVar = 'foo'

        def privateFunc = { x -> println "${privVar} ${x}"}

        return {x -> privateFunc(x) } 
    }

    public static void main(String[] args) {

        def test = new FunctionTests().privilagedObj()

        test('bar')

    }
}

Похожие вопросы