我真的有两个问题:
1) 你什么时候会使用包私有接口?
2)有没有办法让一个公共接口在其包外实现而关闭?
1)仅在您的包范围内需要接口时。例如,接口可以使您的代码更具可读性,但包的调用者不需要它。
2)不,这是不可能的。有关更多信息,请参阅此链接。接口没有定义实现。那你怎么能关闭它来实施呢?
包私有接口仅在策略模式的此类实现的情况下有用,在这种情况下,您可能希望使用多种实现,但不希望世界知道这些类型。
1)您的包中可能有多个类使用的实用方法,这些方法永远不应被外部调用。或者它们可能只有一个类需要,但是该类太大了,您想将一些方法移动到另一个类以实现可维护性。
2)我将不得不尝试一下(对不起,我现在急于出门),但是您可以通过在接口中声明一个受保护的默认构造函数来有效地做到这一点。