内部类和静态方法 Java



可能的重复项:
为什么我们不能在内部类中使用静态方法?

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

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

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

非静态内部类仅在外部类

实例的上下文中是"相关的",因为它可以访问外部类的非静态方法并this外部类(使用 A1.this(。

底线:如果你想这样做,也把内部类标记为静态:

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

现在,您可以从外部类的静态方法调用其静态方法。

最新更新