发件人:JavaWorld
我理解 static
只能与嵌套类一起使用,这使得它们等同于顶级类。我也明白,这使他们能够独立于封闭类进行声明。
这就是理论,有人能想出一个很好的实际例子来说明我们为什么需要这样做吗? (链接中的示例很可能是内部类 AFAIK 的示例)。
另外 - 问题背后的原因 - 为什么有一个模棱两可的名字,为什么“重用”这个词
static
并赋予它不同的含义?
最佳答案
当您的类自然嵌套时使用它,但不需要内部类在 Java 中具有的自动魔术 $this 父引用。每个非静态内部类都有一个对其包含实例的嵌入式引用。当您实际上不需要该引用时,最好不要创建它。它可能导致对象在内存中保留的时间比它们需要的时间长得多,并且当您开始序列化对象/尝试通过网络发送它们时,它也可能会很痛苦。您最终可能会得到比您更大的对象图期待或需要连载!
Map.Entry 的实现就是一个很好的例子。将其嵌套在 map 实现中显然是“自然的”,但实际上不需要将父引用保存回 map 。
对于 #2,它有何不同?字段或方法上的静态意味着它是类定义的属性而不是实例。您无需实例即可访问和使用它。嵌套类上的静态也意味着它是类定义的属性,您可以在没有实例的情况下访问和使用它。
关于java - "The static keyword does not do to a class declaration what it does to a variable or a method declaration.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5007796/