gpt4 book ai didi

java - 为什么要使用私有(private)静态内部类?打败静态内部类的目的?

转载 作者:行者123 更新时间:2023-11-30 06:45:38 25 4
gpt4 key购买 nike

我已经阅读了所有我能找到的关于静态内部类的文章,据我所知:

  • 可以创建静态内部类的实例,而无需事先创建外部类。这是静态和非静态内部类之间的一个主要区别。

但是没有一篇文章回答这个问题:

如果拥有静态内部类的目的是让您可以在没有外部类的情况下创建它,那么您为什么要拥有一个私有(private)静态内部类?

例如,Java 的 LinkedList 实现包含 private static class Node<E> .如果我们尝试实例化 LinkedList<String>.Node<String>它不会工作,因为它是私有(private)的。而且我不明白你为什么要创建一个没有 LinkedList 的节点,因为你只是使用 LinkedList 的 add() 接口(interface)。那么这不能只是一个非静态内部类吗?

对我来说,内部类的 private 和 static 似乎是矛盾的,如果你想既是 private 又是 static 那很奇怪。那么有人可以解释一下我遗漏了什么吗?

谢谢!

最佳答案

请记住,非静态嵌套类(“内部类”)实例具有对其包含实例的引用。那不是免费的。如果您不需要它,您就不应该拥有它。

LinkedList 是一个很好的例子,说明了为什么你会有一个 static 嵌套类:LinkedList 需要 LinkedList 的多个实例.Node,它不需要那些实例来引用列表本身。那将是毫无意义的开销。所以 Node 类是 static 以避免那些对列表的反向引用。它也是 private,因为它仅供 LinkedList 内部使用。


术语旁注:Java 中没有“静态内部类”。如果是static,则不是内部类,是静态嵌套类。更多内容 the tutorial .

关于java - 为什么要使用私有(private)静态内部类?打败静态内部类的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48607429/

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