使API中的某些方法仅对特定包(Java)可用
我收到了这些包裹:使API中的某些方法仅对特定包(Java)可用,java,api,Java,Api,我收到了这些包裹: view view.menu view.modules api 在包api中,我有一个类api(还有一些与我的问题无关的类)。在视图中模块和子模块中,我有一组类 顾名思义,我的Api类是我的程序的Api,它包含程序核心中使用的方法和其他一些方法,允许其他人以自己的方式自定义软件(添加模块、插件等) 因此,我需要做的是找到一种方法,使类Api中的方法X、Y和Z只对视图中的所有类可用。modules包,而Api类中的所有剩余方法都可以是public 我希望在不将Api类移动到另
view
view.menu
view.modules
api
在包api
中,我有一个类api
(还有一些与我的问题无关的类)。在视图中
模块和子模块中,我有一组类
顾名思义,我的Api类是我的程序的Api,它包含程序核心中使用的方法和其他一些方法,允许其他人以自己的方式自定义软件(添加模块、插件等)
因此,我需要做的是找到一种方法,使类Api
中的方法X、Y和Z只对视图中的所有类可用。modules
包,而Api
类中的所有剩余方法都可以是public
我希望在不将Api类
移动到另一个包的情况下执行此操作,并将方法设置为protected
,同时不惜一切代价避免仅使用X、Y、Z方法创建另一个Api类并导入新的Api类。有人能帮我吗
现在类
Api
中的所有方法都定义为public
正如您所注意到的,包访问将是处理这一问题的最简单方法-包级别的任何内容(没有明确标记为public/private/protected的内容)仅对同一包中的类可见。另一种选择是创建两个接口,一个表示公共api,另一个表示您希望内部类看到的接口。然后通过其公共接口提供Api。它在某种程度上仍然是可见的,因为可以将接口转换为具体的api,但至少那时您会知道(或者至少您应该知道)您正在做一些有风险的事情。以这种方式创建的api可以使用类似OSGi的东西来强制执行,但它不是os标准Java的一部分。Java中基于包的访问规则非常有限。