Eclipse предупреждение о синтетическом аксессоре для частных статических вложенных классов в Java?

Мой коллега предложил сделать несколько настроек форматирования кода и предупреждений в Eclipse более строгими. Большинство из этих изменений имеют смысл, но я получил это, мы предупреждаем в Java. Вот некоторый тестовый код для воспроизведения «проблемы»:

package com.example.bugs;

public class WeirdInnerClassJavaWarning {
    private static class InnerClass
    {
        public void doSomething() {}
    }

    final private InnerClass anInstance;

    {
        this.anInstance = new InnerClass();   // !!!
        this.anInstance.doSomething();
    }
}
// using "this.anInstance" instead of "anInstance" prevents another warning,
// Unqualified access to the field WeirdInnerClassJavaWarning.anInstance    

Строка с !!! выдает мне это предупреждение в Eclipse с моими новыми настройками предупреждений:

Доступ к вмещающему конструктору WeirdInnerClassJavaWarning.InnerClass () эмулируется синтетическим методом доступа. Увеличение его видимости улучшит вашу производительность.

Что это значит? Предупреждение исчезает, когда я меняю «закрытый статический класс» на «защищенный статический класс», что для меня не имеет смысла.

редактировать: Наконец-то я разобрался с «правильным» исправлением. Реальная проблема здесь заключается в том, что в этом вложенном приватном статическом классе отсутствует общедоступный конструктор. Этот твик убрал предупреждение:

package com.example.bugs;

public class WeirdInnerClassJavaWarning {
    private static class InnerClass
    {
        public void doSomething() {}
        public InnerClass() {}
    }

    final private InnerClass anInstance;

    {
        this.anInstance = new InnerClass();
        this.anInstance.doSomething();
    }
}

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

Я до сих пор не понимаю, почему сделать вложенный класс защищенным, а не закрытым, - это еще один метод исправления «проблемы», но, возможно, это и есть странная ошибка Eclipse.

(извините, я должен был назвать это NestedClass вместо InnerClass, чтобы быть более ясным.)

Ответы на вопрос(6)

Ваш ответ на вопрос