什么时候在Java中使用单独的软件包?

用户名

有时,当我查看源Java代码时,我注意到除了默认包之外,还有一些文件放在另一个包中,但不了解何时或为什么使用这种做法。在某些情况下,您必须使用或不能使用单独的程序包吗?有人在乎解释吗?

简短的答案:

当项目需要特定的组织或层次结构时,或者当框架不允许使用默认软件包时,请使用软件包。对于简单的CS项目,它可能会过大。

更长的答案:

软件包是Java识别的文件夹,这些文件夹使您可以享受某些特权:

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

    一个常见的例子是java.util.Datejava.sql.Date; 这取决于你在做什么,你可能结业使用两种如果这样做,则必须使用完全限定的类名,就像Writing一样java.util.Date date = new java.util.Date();

  • 您使您的项目具有层次感和组织感;给每个班级一个明智的“生活”场所。

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

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

立即,我有四个常用接口:

MP3
FLAC
Vorbis
AAC

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

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

一切都很好,花花公子。但是,解析实际将在哪里进行呢?如果它放在阅读器包装中怎么办?

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

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

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

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

我在这里拥有的是项目的层次感和结构感。这是一个相当大的项目,因此我可以从组织中受益。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么时候应该为项目更新NuGet软件包?

来自分类Dev

什么时候在Qt中使用指针?

来自分类Dev

什么时候在Java中使用printf语句?

来自分类Dev

什么时候在Java中使用Long vs Long?

来自分类Dev

什么时候在Java语言中使用“严格”?

来自分类Dev

什么时候在C ++中使用引用?

来自分类Dev

我什么时候需要使用sfExport(R Snowfall软件包)

来自分类Dev

设计Go软件包:什么时候应该定义类型的方法?

来自分类Dev

什么时候可以在Java中使用Thead.stop()?

来自分类Dev

什么时候应该单独使用AESIMC,而不是使用AESDEC

来自分类Dev

什么时候在Java并发中使用公平模式?

来自分类Dev

Go软件包应该在什么时候使用log.Fatal?

来自分类Dev

什么时候在组件中使用yield?

来自分类Dev

什么时候在R中使用@ vs $?

来自分类Dev

在Vala中使用软件包

来自分类Dev

在scala中键入别名以在单独的软件包中使用

来自分类Dev

在Angular中使用Darkreader软件包

来自分类Dev

什么时候在C ++中使用引用?

来自分类Dev

什么时候在javascript中使用.concat()

来自分类Dev

Debian Jessie:什么时候删除状态为“ id”的软件包?

来自分类Dev

什么时候在bash中使用()与{}?

来自分类Dev

什么时候在postgreSQL中使用=和:=?

来自分类Dev

什么时候在组件中使用yield?

来自分类Dev

什么时候应该安装“ * -dev”软件包?

来自分类Dev

在Linux中使用MATLAB(Windows)生成的Java软件包

来自分类Dev

什么时候可以重复安装npm软件包?

来自分类Dev

什么时候在函数中使用 return ?

来自分类Dev

什么时候在 Laravel 中使用请求?

来自分类Dev

什么时候在 Java 中使用 ArrayList、LinkedList 和 Stack?

Related 相关文章

热门标签

归档