1

現在インナークラスについて学んでいます。私は2つのクラスを持っています。2 番目のクラスには内部クラスがあります。2番目のクラスで内部クラスのオブジェクトを作成しようとしています。しかし、コンパイルエラーが発生します。誰でも助けることができますか?

これが私のコードです:

public class MainClass {

    public static void main(String[] args) {

        NestedClass.NewUser newUserObj = new NewUser("User");
        System.out.println(newUserObj.Name);
    }
}

class NestedClass {

    class NewUser {
        public String Name;

        NewUser(String name) {
            this.Name = name;
        }
    }
}
4

4 に答える 4

6

内部クラスをインスタンス化するには、まず外部クラスをインスタンス化する必要があります。

以下に示すように、外側のオブジェクトを使用して内側のオブジェクトを作成します。

NestedClass.NewUser newUserObj = (new NestedClass()).new NewUser("User");

参照: http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

于 2013-10-27T13:43:03.427 に答える
2

代替オプション: 内部クラスを作成しますstatic。次に、技術的には、それはもはや「内部」クラスではなく、「ネストされた」クラスに過ぎず、 でインスタンス化できますnew NestedClass.NewUser()ネストされたクラスのチュートリアルで説明されているように、静的なネストされたクラスは、他の回答が参照しているように、囲んでいるクラスのインスタンスを持たずにインスタンス化できます。

于 2013-10-27T13:46:35.770 に答える
2

のインスタンスでのみ のインスタンスを作成できNewUserますNestedClass

new NestedClass().new NewUser("User");
于 2013-10-27T13:43:10.977 に答える
2

名前にもかかわらずNestedClass、ネストされたクラスではなく外部クラスであるためNestedClass、実際のネストされたクラスのインスタンスを作成するには のインスタンスが必要です。NewUser

NestedClass.NewUser newUserObj = new NestedClass().new NewUser("User");
于 2013-10-27T13:45:36.243 に答える