java - 使 API 中的某些方法仅对特定包可用 - Java

标签 java api

我有这些包:

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/

相关文章:

java - 如何测试Spring Webmvc webservice rest

java - 在 JOptionPane 中单击“确定”时如何阻止 JFrame 关闭

python - 如何批量获取/放置 Yahoo 联系人

api - 您如何从 ISBNdb.com 获取一本书的类别信息?

java - 接口(interface)和动态方法调度

java - Bukkit - 在 YAML 中查找玩家姓名

java - Google map api 不显示我当前的位置

android - 无法从 android 解析 JSON,因为 asp.net 服务器不返回数组名称

c++ - Windows C++过滤声音输出

java - 如何使用 OWLAPI 从 owl 个体获取注释