为什么我们不能在非静态内部类中拥有静态方法?
public class Foo {
class Bar {
static void method() {} // Compiler error
}
}
如果我将内部类设为静态,它就可以工作。为什么?
public class Foo {
static class Bar { // now static
static void method() {}
}
}
在 Java 16+ 中,这两个都是有效的。
最佳答案
因为内部类的实例隐式关联到其外部类的实例,所以它本身不能定义任何静态方法。由于静态嵌套类不能直接引用其封闭类中定义的实例变量或方法,它只能通过对象引用来使用它们,因此在静态嵌套类中声明静态方法是安全的。
关于java - 为什么我们不能在(非静态)内部类(Java 16 之前)中有静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975134/