Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使API中的某些方法仅对特定包(Java)可用_Java_Api - Fatal编程技术网

使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中基于包的访问规则非常有限。