这段代码运行得很好。为什么会这样呢?如果我们不能在内部类中声明静态方法,它应该会给出错误。
class Test{
static int j=20;
public void m1() {
class Inner{
public static void m2() {
System.out.println(j);
}
}
Inner inner = new Inner();
inner.m2();
}
public static void main(String[] args) {
Test obj = new Test();
obj.m1();
}
}
假设您的导师不是最新的(?)Java 版本。
事实上,在 Java 16 之前,内部类中不可能有
static
方法,但在那个 Java 版本中,这是允许的。
请参阅为什么 Java 16 中的非静态内部类中允许使用静态方法?了解更多信息。
在我撰写本文时(2024 年 10 月 12 日),当前的 Java 版本是 Java 23。