gpt4 book ai didi

java - 控制 Java 中的类可见性

转载 作者:行者123 更新时间:2023-11-30 02:35:49 28 4
gpt4 key购买 nike

我的项目当前具有以下包结构。

enter image description here

这里我添加了一个包名称utils,并在其中定义了与该模块相关的所有实用程序类。这些已被其他包(即 implinternal)使用,因此我在 util 包中创建了类和方法公开

因为它是公共(public)的,不仅此模块中的类,其他模块中的类也可以访问它,当我使用 IDE 进行编码时,它们会显示为编码建议。

我查阅了几篇研究论文,这些论文描述了这会如何降低 API 的可用性,并给参与开发的开发人员带来糟糕的体验 [ref1 , ref2] .

我知道 java 不允许我使 util 中的类可供 impl 和内部包访问,而不能让其他人访问。

将我的实用程序类放入包“util”中是否正确?或者我应该将所有相互通信的类放在同一个包中?

最佳答案

你是对的,标记为public的东西可以在任何其他包中使用。与其他语言相比,Java 不提供除此之外的任何控制。

一个简单的解决方法:拥有一个特殊包可能会有所帮助,其中包含应可供外部用户使用的公共(public)内容。

含义:创建类似 com.whatever.product.api 的内容 - 并指示您的用户可以使用其中的所有内容 - 但不能使用其他内容。

换句话说:您将需要公开的所有内容公开;但您将这些东西收集在一个特殊的地方,并允许其他人使用。

值得一提的是,Java9将引入的概念modules ,这些允许您定义哪些包应该对模块的用户公开。从这个意义上说,java 9 模块允许您区分“内部”和“外部”公共(public)

关于java - 控制 Java 中的类可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119302/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com