可能的重复项:
为什么我们不能在内部类中使用静态方法?
我不知道为什么内部类不能有静态方法。为什么错了?
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");
}
}
现在,您可以从外部类的静态方法调用其静态方法。