我有这些包:
view
view.menu
view.modules
api
在包 api
中,我有一个类 Api
(以及其他一些与我的问题无关的类)。在 view
模块和子模块中,我有很多类。
顾名思义,我的 Api 类是我的程序的 API,其中包含程序核心中使用的方法以及其他一些允许其他人以自己的方式自定义软件的方法(添加模块、插件等)。 .).
所以我需要做的是找到一种方法让Api
类的方法X、Y和Z仅适用于view.modules
中的所有类封装,而 Api
类中的所有其余方法都可以是 public
。
我想在不将 Api 类
移动到另一个包,并将方法设置为 protected
的情况下执行此操作,并且不惜一切代价避免仅使用以下内容创建另一个 API 类X、Y、Z 方法并导入新的 API 类。有人可以帮我吗?
现在 Api
类中的所有方法都定义为 public
最佳答案
正如您所注意到的,包访问将是处理此问题的最简单方法 - 包级别的任何内容(特别未标记为公共(public)/私有(private)/ protected 内容)仅对同一包中的类可见。另一种选择是创建 2 个接口(interface),一个代表公共(public) api,另一个代表您希望内部类看到的内容。然后您通过其公共(public)接口(interface)提供 Api。它仍然有些明显,因为可以将接口(interface)转换为具体的 api,但至少你会知道(或者至少你应该)你正在做一些有风险的事情。
关于java - 使 API 中的某些方法仅对特定包可用 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892299/