Java中常用内部类吗?他们"坏"吗?

joh*_*nny 21 java inner-classes

Java中常用内部类吗?这些是否与嵌套类相同?或者用Java更换这些更好的东西?我有一本关于版本5的书,它有一个使用内部类的例子,但我想我读过一些内部类是"坏的".

我不知道,并希望有关于它的想法.

谢谢.

Dan*_*ker 31

经常使用内部类,并且非常相似的东西 - 匿名类 - 实际上是不可或缺的,因为它们是Java最接近闭包的东西.所以,如果你不记得你听到内部课程不好的地方,那就别忘了!

  • 只是不要提到双括号初始化器...... (2认同)
  • @skaffman - 确认!只是看了他们,不敢相信.你认为你创建了一个List <int>?再猜一遍,我的朋友,再猜一次! (2认同)

Bri*_*new 19

他们并非"坏".

它们可能会受到滥用(例如内部类的内部类).一旦我的内部类跨越了几行,我宁愿将它提取到自己的类中.它有助于提高可读性,并在某些情况下进行测试.

有一个问题不是很明显,值得记住.任何非static内部类都将具有对周围外部类的隐式引用(隐式的"this"引用).这通常不是问题,但是如果你来序列化内部类(比方说,使用XStream),你会发现这会导致你意想不到的悲伤.


Tom*_*Tom 6

我不认为他们是邪恶的或坏的。也许它们没有被广泛使用,但它们确实有很多用途,回调就是其中之一。一个特殊的优点是它们可以从与外部类不同的类扩展,因此您可以拥有多重继承。

我想说内部类的问题之一是它们的语法有点“丑陋”。这让一些人感到沮丧。在工作中,这样的人有很多。