使API中的某些方法仅适用于某个包 - Java

时间:2014-01-02 21:31:20

标签: java api

我有这些包裹:

view
view.menu
view.modules
api

api包中,我有一个班级Api(还有一些与我的问题无关的其他班级)。在view模块和子模块中,我有很多类。

我的Api类,顾名思义,是我程序的API,程序核心中使用的方法和其他一些允许其他人以自己的方式自定义软件的方法(添加模块,插件等等)。 )。

所以我需要做的是为类Api找到一种方法,让方法X,Y和Z仅对view.modules包中的所有类可用,而所有剩余的方法都在Api类可以是public

我希望在不将Api class移动到另一个包的情况下执行此操作,并将方法设置为protected,并且不惜一切代价避免使用X,Y,Z方法创建另一个API类并导入新的API类。有人可以帮助我吗?

现在,类Api中的所有方法都定义为public

1 个答案:

答案 0 :(得分:2)

正如您所知,包访问将是处理此问题的最简单方法 - 包级别的任何内容(任何特别未标记为public / private / protected的内容)仅对同一包中的类可见。另一种方法是创建2个接口,一个代表公共api,另一个代表你希望内部类看到的东西。然后通过其公共接口提供Api。它仍然有点可见,因为可以将界面转换为具体的api,但至少你知道(或者至少你应该)你正在做一些有风险的事情。