【发布时间】:2017-05-16 10:06:41
【问题描述】:
在读了这本书的那部分两遍之后,我仍然不明白为什么这么广泛地陈述。 非静态成员类是语言的一部分。同意并非任何编程语言的所有部分都是完美的。具有非静态成员类的优点,它们可以访问封闭实例的方法,因此很少会超过可能增加的代码复杂性(内部类和外部类之间的耦合更紧密。顺便说一句:静态成员也可以访问外部类的字段类,只要外部类也是静态的)?本书的这一部分并没有真正给出任何缺点。
适配器模式的非静态成员类呢?建造者模式?
对于小对象(类似于 C++ 的结构)的非静态成员类如何保存一些属于一起且属于外部类的数据位(因此没有理由将它们设为静态)?
(这里的 Effective Java 2nd Edition 似乎有一个很大的摘录,作者是 Joshua Bloch:http://jtechies.blogspot.com/2012/07/item-22-favor-static-member-classes.html - 以防万一有人手边没有这本书,要知道我的起点是)。
【问题讨论】:
-
他没有提到与非静态类所需的外部实例引用相关的空间/时间开销吗?
-
如果布洛赫本人没有给出可接受的理由,则没有理由遵循他的建议。 “摘录”要么是抄袭,要么是未经审查的第三方评论。
-
@EJP:我不会评论不知名的人发布的内容。该链接是我在谷歌上搜索得到的答案。我给它是为了方便这个线程的读者。我的怀疑与 J.B. 原著 (2dn ed.) 中包含的文本有关。
-
说喜欢静态嵌套类而不是内部类并不是太“笼统”。它不反对使用内部类,只需要完全理解它们的用例。不需要“使[嵌套类型]静态的理由”,_au 相反,它需要一个理由不这样做。另一件事,包含类只能是静态的,如果它们也是嵌套的,双重嵌套类型是不好的。
标签: java design-patterns