gpt4 book ai didi

Java 内部类和静态方法或字段

转载 作者:行者123 更新时间:2023-12-02 07:56:40 24 4
gpt4 key购买 nike

为什么内部类不能有静态(非最终)字段和方法?

这个问题之前已经发布过,但发布的答案是:这是一个设计决策,或者因为内部类发生在外部类的上下文中,并且不能声明静态方法。

然而这些答案并没有澄清我的问题。在内部类上允许静态字段和方法会产生什么后果?我的猜测是这两个限制是相关的。由于静态方法需要访问内部类甚至外部类的其他静态方法和非最终静态变量(以便能够更改内部状态),这将导致内部类表现得像静态类。不过,JVM 可以限制从内部类中的静态方法到内部类中的静态方法和数据的访问。但这提出了一个问题:为什么我们不能在内部类中声明静态非最终变量?

这样设计还是有问题?

亲切的问候

最佳答案

在非静态内部类中声明静态变量似乎与创建内部非静态类的意图相矛盾。
如果您将某些变量和方法声明为静态,那么当您在不创建类实例的情况下访问它们有意义时,如果您将内部类声明为非静态其实例类型,那么意图是通过其实例而不是静态地访问它。如果将内部类声明为静态,从而将其与外部类分开,则可以将变量和方法声明为静态。
您问如果 java 允许您在内部非静态类中声明静态方法/字段会产生什么后果。嗯,可能不会有。但这是没有意义的,因此这是一个设计选择。

关于Java 内部类和静态方法或字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com