为什么内部类不能有静态(非final)字段和方法?
这个问题以前已经被提过,但是回答都是:这是一个设计决策或者因为内部类发生在外部类的上下文中,不能声明静态方法。
然而这些答案并没有解答我的问题。如果允许内部类有静态字段和方法会有什么后果?我猜这两个限制彼此相连。因为静态方法需要访问内部类的其他静态方法和非final静态变量,甚至从外部类访问(以能够改变内部状态),这将使内部类的行为类似于静态类。JVM可以限制对内部类中静态方法和数据的访问,但是这引出了另一个问题:为什么我们不能在内部类中声明静态非final变量?
这是设计问题还是存在问题?
顺祝商祺
这个问题以前已经被提过,但是回答都是:这是一个设计决策或者因为内部类发生在外部类的上下文中,不能声明静态方法。
然而这些答案并没有解答我的问题。如果允许内部类有静态字段和方法会有什么后果?我猜这两个限制彼此相连。因为静态方法需要访问内部类的其他静态方法和非final静态变量,甚至从外部类访问(以能够改变内部状态),这将使内部类的行为类似于静态类。JVM可以限制对内部类中静态方法和数据的访问,但是这引出了另一个问题:为什么我们不能在内部类中声明静态非final变量?
这是设计问题还是存在问题?
顺祝商祺