加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:04:16 所属栏目:Java 来源:网络整理
导读:有时当我查看源代码时,我注意到除了默认代码之外的一些文件放在另一个包中,但是没有理解何时或为什么使用这种做法.您是否必须使用单独的包装?有人在乎解释吗? 解决方法 简短的回答: 当项目需要特定的组织或层次结构时,或者当您的框架不允许使用默认包时,
有时当我查看源代码时,我注意到除了默认代码之外的一些文件放在另一个包中,但是没有理解何时或为什么使用这种做法.您是否必须使用单独的包装?有人在乎解释吗?

解决方法

简短的回答:

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

答案越长:

包是Java识别的文件夹,允许您使用某些特权:

>您可以将两个名称相同的类放在不同的文件夹中,而不会导致冲突.

一个常见的例子是java.util.Date和java.sql.Date;根据你正在做的事情,你可能最终使用两者.如果你这样做,你必须使用fully qualified class name,这就像编写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

我继续,但从这里变得有点疯狂.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读