Javaの名前空間の仕組みの1つにパッケージがあります。大規模開発では必須の概念です。また、他人の作ったコードの再利用という観点でも、パッケージを正しく活用する必要があります。

・完全修飾名:パッケージ名まで含めたクラスやインターフェースの呼び名
・単純名:パッケージ名を除いたStringの部分(クラス名)

パッケージで実現できることは
・名前空間
・意味的なまとまりの管理(クラスの設計同様、パッケージの設計も責務の分割が目的)
・アクセス制御(Javaのデフォルトアクセス制御は、パッケージ内からしかアクセスできない制御)

パッケージ名にインターネットドメイン名(DNSドメイン名)を推奨する。(DNSやURLと逆順)
習慣として、型名は大文字で始まる名前、パッケージ名は全て小文字にします。

パッケージの宣言はファイルの先頭に「package packageの完全修飾名;」を書く(相対パスのような表記はない)

クラス名とインターフェース名がファイル名に制約をつけるように、パッケージ名はディレクトリ名に制約をつけます。(必須ではない)

java.langパッケージは暗黙にインポートする。

単純名を書いた時の名前解決の順序は、
・そのファイル内で定義する型名
・単一型インポートした型名
・同じパッケージ内の型名
・オンデマンドインポートした型名
曖昧さが発生する場合、面倒でも完全修飾名で型名を書くことを進めます。

単純名の衝突を防ぐ指針は、
・標準ライブラリの型名と同名は避ける
・オンデマンドインポート(「*」を使ったインポート)をなるべく避ける

staticインポートはパッケージ内のクラス及びインターフェースのstaticメンバ名をインポートします。(慎重に)

クラスとインターフェースは、public修飾子を
・付けている場合、publicスコープ
・付けていない場合、パッケージスコープ

インターフェースだけをパッケージの外にさらして、実装クラスをパッケージ内に隠蔽する技法はよく使います。

パッケージ宣言文がない場合、名前なしパッケージと見なされます。名前なしパッケージもパッケージの1つです。

JAVA_Package的更多相关文章

  1. hbase协处理器编码实例

    Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionSer ...

  2. gRPC源码分析0-导读

    gRPC是Google开源的新一代RPC框架,官网是http://www.grpc.io.正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3.虽然目前在工程化方 ...

  3. dubbox 增加google-gprc/protobuf支持

    好久没写东西了,今年实在太忙,基本都在搞业务开发,晚上来补一篇,作为今年的收官博客.google-rpc 正式发布以来,受到了不少人的关注,这么知名的rpc框架,不集成到dubbox中有点说不过去. ...

  4. Cocos2d-JS/Ajax用Protobuf与NodeJS/Java通信

    原文地址:http://www.iclojure.com/blog/articles/2016/04/29/cocos2d-js-ajax-protobuf-nodejs-java Google的Pr ...

  5. Android Log Tag含义

    在分析Android问题的时候重要的手段之一就是分析log,在events.log中有很多系统log,其中有些log的含义并不是很了解,下面就是从安卓源码中得到的系统log的tag. 关于Tag的说明 ...

  6. Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据

    Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现, ...

  7. golang下的grpc

    facebook的thrift也是开源rpc库,性能高出grpc一倍以上,grpc发展的较晚,期待以后有长足的进步.简单来说thrift = grpc + protobuf gRPC基于HTTP/2标 ...

  8. hbase 协处理器

    一.服务端1.安装Protobuf2.RPC proto 定义文件:Examples.protooption java_package = "org.apache.hadoop.hbase. ...

  9. protobuf初体验

    概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...

随机推荐

  1. Ajax的课外了解

    Ajax传入的数据的话,只能是字符串或数字,字段,其他形式的传参都不可以: Ajax只是跟后台交互也有同源策略的限制: 不是当前服务器叫跨域: Ajax也有同源策略的限制想做跨域处理,只能通过scri ...

  2. python之路——6

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 增dic['age'] = 21 dic.setfault()删popcleardel popitem ...

  3. Java队列Queue

    上个星期总结了一下synchronized相关的知识,这次将Queue相关的知识总结一下,和朋友们分享. 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.Java提供 ...

  4. 使用LiteOrm删除数据对象失败的坑

    使用 LiteOrm.newSingleInstance(BaseApplication.getInstance(), Constant.DB_NAME); 在不同进程中创建了两次对象,在保存和删除的 ...

  5. PostgreSQL手动主从切换

    主从切换操作: 1>主库宕机或者测试主备切换情况下停掉主库:systemctl stop postgres 从库会报日志错误信息:[root@db02 /]# cd /var/postgresq ...

  6. Shiro Realm

    Realm: 在实际应用中,shiro从数据库中获取安全数据(如用户.角色.权限),而不是从ini中,可作为安全数据源 即SecurityManager要验证用户身份,那么它需要从Realm获取相应的 ...

  7. Windows下sbt安装配置

    1.下载sbt1.2.8 官网:https://sbt-downloads.cdnedge.bluemix.net/releases/v1.2.8/sbt-1.2.8.tgz 2.配置环境 #SBT_ ...

  8. Java程序---多数字求和

    题目: 编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 设计思想: 1.记录要输入的数字的个数n 2.建立一个长度为n的数组存储输入的数字 3.累加求和并输出结果 注:此程序中应用了Sc ...

  9. 关系型数据库和NoSQL数据库

    一.数据库排名和流行趋势 1.1 Complete ranking 链接: https://db-engines.com/en/ranking 在这个网站列出了所有数据库的排名,还可以看到所属数据库类 ...

  10. 安装JavaFX Scene Builder,并配置到Eclipse

    转载自:https://www.yiibai.com/javafx/install-javafx-scene-builder-into-eclipse.html 1-JavaFX Scene Buil ...