内部类和静态方法java

时间:2012-05-20 10:14:51

标签: java

  

可能重复:
  Why cant we have static method in an inner class?

我不知道为什么内部类不能有静态方法。为什么这是错的?

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而不是内部类可以访问?有什么问题。

1 个答案:

答案 0 :(得分:0)

这里的问题是你的非静态内部类有一个静态方法,你试图从外部类的静态方法中调用它。

非静态内部类仅在外部类的实例的上下文中是“相关的”,因为它可以访问外部类的非静态方法和外部类的this(使用A1.this)。

底线:如果你想这样做,那么将内部类标记为静态:

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

现在你可以从外部类的静态方法中调用它的静态方法。