将下面的示例视为我的类库项目,我需要使CommonClass同一项目中的所有其他类(A、B 和 C)可访问,但不可访问(当其他项目使用该库时),其中CommonClass包含通用方法而在我的媒体库中使用的所有其他类领域,在C#这是通过使用该解决internal的访问修饰符CommonClass。这甚至可以使用Java吗?
这是Java 9 模块系统的绝佳用例。有了它,您可以导出除 之外的所有包com.test.pac4,禁止依赖于您的库的任何项目访问该包中的任何类(除非您的用户通过 覆盖它--add-exports)。
为此,您可以module-info.java在源目录中创建一个包含以下内容的文件(我建议更改模块名称):
module com.test.project {
exports com.test.pac1;
exports com.test.pac2;
exports com.test.pac3;
}
Run Code Online (Sandbox Code Playgroud)
您还需要requires用于项目依赖的任何模块(请参阅:Java 9 Modularity)。
如果您使用的是 Java 8 或更低版本,则上述解决方案是不可能的,因为模块系统是在 Java 9 中引入的。
Java 8 的一种解决方法是修改您的项目层次结构;您可以将访问的每个类移动CommonClass到单个包中,然后将CommonClass包设为私有。这将阻止您图书馆的用户访问CommonClass.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |