-1

Javaのプライベートアクセス制御を使用して静的メソッドにパラメータを渡さなければならない理由。

class Test extends Teacher
{
  int field = 123;

  private static void accessInstance(Test test)
  {
    System.out.println(test);
  }
}

以下のコードでは、エラーが発生します

  private static void accessInstance()
  {
     System.out.println("Hi there");
  }
4

2 に答える 2

0

静的メソッドはインスタンス値にアクセスできないため、静的値のみにアクセスできます。したがって、静的メソッドがインスタンスのフィールドの値にアクセスするようにする場合は、それをパラメーターとして渡す必要があります。

最終的には、メソッドを静的ではなくして、インスタンスオブジェクトから直接呼び出すことができるようにすることをお勧めします。

その上、上記のコードには何も問題はありません(少なくともそれはコンパイルされません)。

于 2013-01-12T08:51:58.017 に答える
0

クラスが内部クラスで静的でない場合、コンパイラはエラーを出します。例:

class X
{
    class Test
    {
        int field = 123;

        private static void accessInstance(Test test)
        {
            System.out.println(test);
        }
    }
}

これは、内部クラスが静的である場合に機能します。

 class X
{
    static class Test
    {
        int field = 123;

        private static void accessInstance(Test test)
        {
            System.out.println(test);
        }
    }
}

あなたは私が思うあなたの投稿を修正する必要があります。

静的内部クラスは、それを囲む外部クラスインスタンスのインスタンスがなくてもインスタンス化できることを意味します。

JLS8.1.3。内部クラスとそれを囲むインスタンス

内部クラスは、定数変数(§4.12.4)でない限り、静的メンバーを宣言しない場合があります。そうしないと、コンパイル時エラーが発生します。

于 2013-01-12T08:56:08.610 に答える