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

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Предупреждение Eclipse о синтетическом методе доступа для частных статических вложенных классов в Java?

Сообщение Anonymous »

Мой коллега предложил сделать некоторые параметры форматирования кода и предупреждений 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, чтобы было более понятно.)

Подробнее здесь: https://stackoverflow.com/questions/921 ... sses-in-ja
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • API данных Youtube — получение частных и частных плейлистов
    Anonymous » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Тестирование частных статических универсальных методов в C#
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как избежать объявления частных функций в файлах заголовков классов (C++)
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»