我正在设计一个SPI,其中的继承结构是一棵树。所以你可以想象,一些类是树中的叶子节点,有些则不是。
我的问题是我想限制这种继承结构,允许开发人员只扩展特定的类(主要是叶子节点)。根据问题的定义,我不能将早期的类声明为final
,否则叶节点类不能扩展它们。
我该如何做到这一点?
答案 0 :(得分:2)
您可以将所有父类放在与" leaf"相同的包中。类,使所有这些父类在包含范围内包含私有(不要将它们声明为公共类)。这会限制他们的知名度。
如果你很幸运使用java 9,你可以在项目中使用模块,只导出叶子类。