3 回答
TA贡献1777条经验 获得超3个赞
使用Java 9 中的Jigsaw项目,您可以完全按照您可以决定要导出的包的方式执行此操作。例如:
module com.yourproject {
exports com.yourproject.package1;
}
这将确保仅package1导出。
TA贡献1772条经验 获得超5个赞
现有答案已经指出,适应这种情况的方法是将您的代码模块化(首先添加一个模块声明module-info.java)。只是参考sotms#module-declaration详细说明它们
exports可以添加子句来声明该模块使所有且仅public特定包中的类型可供其他模块使用:
module com.foo.bar {
requires org.baz.qux;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
如果一个模块的声明不包含导出子句,那么它根本不会将任何类型导出到任何其他模块。
并从 JLS 部分导出和打开的包
该exports指令指定要由当前模块导出的包的名称。对于其他模块中的代码,这将在编译时和运行时授予对包中的publicand类型以及这些类型的and成员的访问权限(第 6.6 节)。它还为其他模块中的代码授予对这些类型和成员的反射访问权限。protectedpublicprotected
并进一步涉及合格和不合格的出口......
对于限定指令,包中的公共和受保护类型,以及它们的公共和受保护成员,只能由 to 子句中指定的模块中的代码访问。子句中指定的模块to被称为当前模块的朋友。对于非限定指令,任何模块中的代码都可以访问这些类型及其成员。
添加回答
举报
