gpt4 book ai didi

java - 什么时候在java中使用单独的包?

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:28 24 4
gpt4 key购买 nike

有时,当我查看源 Java 代码时,我会注意到一些文件除了默认包之外还放置在另一个包中,但我不明白何时或为何使用这种做法。是否存在必须或不得使用单独包的情况?有人愿意解释一下吗?

最佳答案

简短的回答:

当您的项目需要特定的组织或层次结构时,或者当您的框架不允许使用默认包时,使用包。对于简单的 CS 项目,它可能有点矫枉过正。

较长的答案:

包是 Java 识别的文件夹,可以让您获得某些好处:

  • 您可以将两个同名的类放在不同的文件夹中,而不会引起冲突。

    一个常见的例子是java.util.Datejava.sql.Date;根据您正在做的事情,您可能会同时使用。如果这样做,则必须使用 fully qualified class name ,这就像编写 java.util.Date date = new java.util.Date();

  • 您让您的项目具有层次感和组织感;给每个类(class)一个合理的“生活”场所。

  • 具有包私有(private)方法和/或字段的类将无法跨包边界访问,这在某些情况下可能是可取的。

以我目前的项目为例。我决定编写一个元数据解析器来读取 MP3、FLAC、Vorbis 和 AAC 文件。

马上,我有四个通用接口(interface):

MP3
FLAC
Vorbis
AAC

...但是,这些都是真正的压缩格式(FLAC 是无损的,所以那里没有压缩),所以它们属于传达这一点的地方。

name.makoto.format
- MP3
- FLAC
- Vorbis
- AAC

这一切都很好,花花公子。但是实际进行解析的类在哪里?如果它存在于阅读器包中怎么办?

name.makoto
- reader
MediaReader
- format
MP3
FLAC
Vorbis
AAC

假设现在我想实现那些格式接口(interface)。让它们与接口(interface)本身处于同一级别是没有意义的,因为它们只是实际对象的 API。让我们将其移动到 impl 包中。

name.makoto
- reader
MediaReader
- format
MP3
FLAC
Vorbis
AAC
- impl
MP3Impl
FLACImpl
VorbisImpl
AACImpl

我会继续,但从这里开始有点疯狂。

我的项目具有层次感和结构感。这是一个规模庞大的项目,因此我可以从组织中受益。

关于java - 什么时候在java中使用单独的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043004/

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