,同时通过我的项目的第三方库的一些消息来源浏览我注意到下面的代码模式:有一个接口/类的公共静态内部类的优点是什么?
public interface MyInterface {
public static class MyClass1 implements MyInterface { ... }
public static class MyClass2 implements MyInterface { ... }
public static class MyClass3 implements MyInterface { ... }
}
或者这一个:
public class MyBaseClass {
public static class MyClass1 extends MyBaseClass { ... }
public static class MyClass2 extends MyBaseClass { ... }
public static class MyClass3 extends MyBaseClass { ... }
}
真实生活中的例子:
- SwingX:
org.jdesktop.swingx.decorator.HighlightPredicate
(Source) - 物质:
org.pushingpixels.substance.api.renderers.SubstanceDefaultTableCellRenderer
(Source)
有这样的代码结构的优点是什么?
我的第一个想法是“聚合”,但同样的事情可以使用普通的旧包来实现。那么何时/为什么使用公共内部类而不是包是更好?
我没看你已经张贴了现实生活中的例子,但一个区别是内部类可能使用外部类的私有成员,如果他们是“兄弟姐妹”(单独的顶级类) – 2011-03-22 12:05:37
好问题,则不是这种情况。就我个人而言,我建议避免这种模式,因为它将公共课程隐藏在人们通常不期望找到它们的位置,而没有为折衷提供任何明显的益处。但也许有人知道这种模式的好处应该是什么。 – aroth 2011-03-22 12:06:29
@Grzegorz,接口不能有私人成员。 – 2011-03-22 12:09:51