为什么我们不能在非静态内部类中使用静态方法?
public class Foo {
class Bar {
static void method() {} // Compiler error
}
}
如果我将内部类设为静态,它就可以工作。为什么?
public class Foo {
static class Bar { // now static
static void method() {}
}
}
在 Java 16+ 中,这两个都是有效的。
原文由 Rahul Garg 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为内部类的实例与其外部类的实例隐式关联,所以它不能自己定义任何静态方法。由于静态嵌套类不能直接引用其封闭类中定义的实例变量或方法,它只能通过对象引用来使用它们,因此在静态嵌套类中声明静态方法是安全的。