1

Javaでスタンドアロンの内部クラスを定義する方法はありますか?

注意: C# のように「部分的な」クラスは必要ありません。完全なクラスが必要ですが、内部です。

将来のJavaでそのような構文を導入する計画はありますか?

package tests.java;

public class Try_InnerClassStandalone_01 {

    public static void main(String[] args) {

        Outer O1 = new Outer(12);
        Outer O2 = new Outer(13);

        Outer.Inner i1 = O1.new Inner();
        System.out.println(i1.getData());

        InnerExt i2 = O1.new InnerExt();
        System.out.println(i2.getData());

    }
}

class Outer {

    class Inner {
        int getData() {
            return data;
        }
    }

    public int data;

    public Outer(int data) {
        this.data = data;
    }
}

class InnerExt extends Outer.Inner {

}

アップデート

静的内部クラスと非静的内部クラスの違いは何ですか。そして、メリットを活かしてデメリットを回避したい。

利点は、Outer.this暗黙的に参照できることです (コードが短くなります)。

欠点は、内部クラスを外部クラス定義の境界に入れる必要があることです (モジュール性がない)。

4

2 に答える 2

1

あなたはこれを行うことはできません

class InnerExt extends Outer.Inner {

}

インスタンスInnerのコンテキストでのみ関連するためです。Outerのコンテキスト外に拡張することはできませんOuter。あなたができるように

class Outer {
    class Inner {

    }
    class InnerExt extends Inner {

    }
}

Innerそれ以外の場合は、staticクラスを作成する必要があります。その後、可視性の範囲内で拡張できます。

于 2013-10-01T13:56:18.857 に答える
1

これを試して:

class Outer {
    static class Inner {
        // ...
    }
}

非静的内部クラスのインスタンスには、それを囲むクラスのインスタンスへの暗黙的な参照があります。「スタンドアロンの内部クラス」で何を意味しているのか私が疑うものが必要な場合は、内部クラスを作成する必要がありますstatic

于 2013-10-01T13:54:03.440 に答える