0

以下は、この中で匿名クラスを作成する匿名内部クラスの例です。

class A
{
    void one()
    {
        System.out.println("hello");
    }
}

class One
{
    public static void main(String args[])
    {
        new A()
        {
            void five()
            {
                one();
            }
        }.five();
    }
}

私の質問は、クラスOneを匿名(内部の匿名クラスではなく)、つまりpublic staticvoidmainメソッドを含む単純なクラスにすることができるかどうかです。

4

2 に答える 2

3

static void main(String...)でなければならずstatic、内部クラス(匿名またはその他)は静的メソッドを持つことができません。

ネストされたクラスと内部クラスについてhttp://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

ネストされたクラスは、静的と非静的の2つのカテゴリに分類されます。静的と宣言されたネストされたクラスは、単に静的なネストされたクラスと呼ばれます。非静的なネストされたクラスは、内部クラスと呼ばれます。

于 2012-09-10T16:40:58.207 に答える
0

匿名クラスの静的メソッドを作成することはできません。最初の例では、静的メソッドを参照することはできません。考えられる唯一の方法は、実行時にリフレクションを使用することです(コーディング方法はほとんど適切ではありません)。2番目のインスタンスでは、すべての匿名クラスと内部クラスが「親」インスタンスで作成されます(この例では、Aの匿名インスタンスにOneのインスタンスへの参照が含まれます)。つまり、内部クラスと匿名クラスは静的メソッドを念頭に置いて設計されていません。静的メソッドが必要な場合は、親クラスの一部である必要があります。

于 2012-09-10T16:56:43.200 に答える