Java Access说明程序可以跨包访问而不是公开的

时间:2016-08-26 05:38:15

标签: java

我正在构建一个包含不同包的java库。现在的问题是,我希望跨包访问java成员(类,方法和字段),但不需要将它们(从JAR文件)公开到最终级别到客户端。例如

Class B in Package B应该访问Class A in Package A

的成员

我找到的一种可能方案是为protected成员声明Class A访问说明符,并通过将Class B扩展为Class A来访问Class B中的成员。 我的问题是,这是我在java中实现它的唯一方法吗?

如果我不想从JAR公开A类(公共)怎么办?在C#中,我们使用"内部"它将在CSharp库项目中提供访问权限,但不会从二进制文件(dll)或程序集文件中公开到最终级别。

1 个答案:

答案 0 :(得分:1)

不,没有这样的事情。你必须采取不同的方法。有一个 ton 的选项,在一个答案中有太多的东西无法解决,但我只是一些的基本想法:

  • 这可能是一个红旗,表明包装组织不佳。考虑将您的软件包组织成更多功能组。
  • 这可能是一个红色标记,表示一些有问题的设计选择。考虑一个更合适的类和接口层次结构。
  • 考虑添加暴露您需要公开的内容的接口。
  • 考虑制作"内部"公共事物和外部安全使用。

但你 将不得不在这里进行一些重组。如果你开始添加各种黑客来解决它现在可能已经足够了,但你可能会在以后后悔。最好在第一次尝试尽可能正确地完成工作。