【发布时间】:2010-11-01 18:53:11
【问题描述】:
为什么我们不能在非静态内部类中拥有静态方法?
public class Foo {
class Bar {
static void method() {} // Compiler error
}
}
如果我将内部类设为静态,它就可以工作。为什么?
public class Foo {
static class Bar { // now static
static void method() {}
}
}
在 Java 16+ 中,这两个都是有效的。
【问题讨论】:
-
因为现在 Java 是旧的 COBOL :)
-
底线是:因为他们还没有实现它。
-
'非静态内部'是一个重言式。
-
如果你不想把你的内部类暴露给别人,又希望它包含静态方法,你可以把修饰符“private”和“static”都放在内部类上。
-
JDK16修复了这个问题,现在你可以在内部类上声明静态方法和字段了。
标签: java class static inner-classes