web-dev-qa-db-ja.com

「X.Yを含む囲みインスタンスが必要」を解決するにはどうすればよいですか?

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
}

次のように、同じパッケージに存在する他のクラスの内部クラスの1つのインスタンスを作成する必要があります。

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

しかし、私は次のエラーが発生しています:

x.Yを含む囲みインスタンスが必要です

このエラーの解決にご協力ください。

37
Jame

まず、Xクラス(外部クラス)のオブジェクトを作成し、objX.new InnerClass()構文を使用してYクラスのオブジェクトを作成する必要があります。

試して、

X x=new X();
X.Y y=x.new Y();
77
adatapost

静的な内部クラスを宣言したい場合:public static class Y

34
Hugh

Xのインスタンスを作成しないように、Yを静的として宣言します。

public class X
{
    public static class Y {
    }
}
8
Jon_Li