0

重複の可能性:
内部クラスに静的メソッドを含めることができないのはなぜですか?

内部クラスが静的メソッドを持つことができない理由はわかりません。なぜそれが間違っているのですか?

class A1
{
    class B1
    {
         static void fun()
        {
            System.out.println("HIII");
        }
    }
    public static void main(String[] args)
    {
        A1 a = new A1();
        A1.B1 b = new a.B1();
        b.fun();
    }
}

外部クラスオブジェクトが静的メソッドにアクセスできy、内部クラスではない変数がアクセスできる場合はどうなりますか?問題は何ですか。

4

1 に答える 1

1

ここでの問題は、非静的内部クラスに静的メソッドがあり、外部クラスの静的メソッドからそれを呼び出そうとしていることです。

非静的内部クラスは、外部クラスの非静的メソッドおよびthis外部クラスの(を使用してA1.this)にアクセスできるため、外部クラスのインスタンスのコンテキストでのみ「関連」します。

結論:これを実行したい場合は、内部クラスも静的としてマークします。

static class B1
{
     static void fun()
    {
        System.out.println("HIII");
    }
}

これで、外部クラスの静的メソッドから静的メソッドを呼び出すことができます。

于 2012-05-20T10:21:55.450 に答える