Ошибка затмения? Java/Groovy видимость приватных полей

У меня есть два класса: абстрактный класс Java и подкласс Groovy, расширяющий класс Java. Они выглядят примерно так:

(Джава)

public abstract class Testing1 {
    private static int myField = 0; //static not relevant to the issue.
}

(отличный)

class Testing2 extends Testing1 {

    public static void main(String[] args) {
        println myField;
    }
}

Теперь, когда поле объявлено закрытым, запуск Testing2 выдает исключение. Как и ожидалось. Однако Eclipse не выдает никаких предупреждений о том, что это поле не отображается, и даже автоматически дополняет myField слово, если вы его вводите! Есть ли параметр Eclipse, который я могу активировать, чтобы не обжечься при кодировании Java и Groovy?


person kinbiko    schedule 15.12.2014    source источник
comment
это происходит, если поле тоже не статично?   -  person blackdrag    schedule 16.12.2014
comment
@blackdrag Да, это происходит (но только если метод в Testing2 также не является статическим.)   -  person kinbiko    schedule 16.12.2014


Ответы (1)


Для меня это звучит как ошибка greclipse, поскольку такой опции быть не должно. Groovy не предоставляет частный доступ для подклассов к родительским классам. Статический случай немного спорен, поскольку Testing1.myField технически разрешен в Groovy. Но поскольку вы подтвердили, что это происходит и для полей экземпляров, я почти уверен, что это непреднамеренное поведение.

Заполните отчет об ошибке здесь: https://jira.codehaus.org/browse/GRECLIPSE. много

person blackdrag    schedule 16.12.2014