-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);
        }
    }
}

我认为你应该更正你的帖子。

静态内部类意味着您可以在没有封闭外部类实例的实例的情况下实例化它。

JLS 8.1.3。内部类和封闭实例

内部类不能声明静态成员,除非它们是常量变量(第 4.12.4 节),或者发生编译时错误。

于 2013-01-12T08:56:08.610 回答