Как я могу решить "требуется наличие включающего экземпляра, содержащего XY"? - PullRequest
37 голосов
/ 01 октября 2011

Я занимаюсь разработкой небольшого настольного приложения в Netbeans.Это моя первая программа, и я сталкиваюсь с очень странным типом ошибки.Я знаю, что сделал что-то не так, но не могу отследить, что я делаю неправильно: (

Пожалуйста, помогите мне решить эту ошибку.

Описание: У меня есть пакет по умолчанию Src, и яя создаю новые классы Java в этом пакете по мере необходимости. Наряду с другими классами я создал класс X следующим образом:

public class X
{
    public class Y
    {//some member functions and variables exist here}

    public class Z
    {//some member functions and variables exist here}

    //some member functions and variables exist here
}

Теперь мне нужно создать экземпляр одного из внутренних классов в каком-то другом классекоторый существует в том же пакете, например:

public X.Y oY = new X.Y();

, но я получаю следующую ошибку:

требуется включающий экземпляр, содержащий XY

Пожалуйста, помогите мне в устранении этой ошибки.

Ответы [ 3 ]

77 голосов
/ 01 октября 2011

Прежде всего вы должны создать объект класса X (внешний класс), а затем использовать синтаксис objX.new InnerClass() для создания объекта класса Y.

Попробуйте,

X x=new X();
X.Y y=x.new Y();
34 голосов
/ 01 октября 2011

Вы хотите объявить статические внутренние классы: public static class Y.

8 голосов
/ 20 июня 2013

Объявите Y как статический, чтобы избежать создания экземпляра X.

public class X
{
    public static class Y {
    }
}
...