可能是重复问题:
为什么我们不能在非静态内部类中声明静态方法?
大家好,在Java中,我们为什么不能在[public]内部类中声明静态方法,除非这些内部类也被声明为静态?
令人惊讶的是,顶层类可以拥有任意数量的静态方法,而不需要任何特殊修饰符。
可能是重复问题:
为什么我们不能在非静态内部类中声明静态方法?
大家好,在Java中,我们为什么不能在[public]内部类中声明静态方法,除非这些内部类也被声明为静态?
令人惊讶的是,顶层类可以拥有任意数量的静态方法,而不需要任何特殊修饰符。
非静态内部类只有在外部类的实例上下文中才存在。
因此...如果你要有一个静态方法,整个内部类都必须是静态的。如果不这样做,当尝试调用静态方法时,无法保证内部类已经存在。
OuterClass.InnerClass.staticMethod()
不能工作?内部类只是一个普通的类,它具有对封闭类实例的隐藏引用。 - Lawrence DolOuterClass.InnerClass.class
获取Class
实例来轻松验证,然后可以进行反射。禁止在这些类上使用静态方法的决定可能是一个概念/设计动机的决定。个人认为这不是一个好决定,但无论如何,你给出的理由都是无意义的。 - Elias Vasylenko