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. centos6.5最小化安装之后装图形化界面

    查看自己系统环境 # cat /etc/issue 先要安装KDE桌面环境,执行命令: # yum groupinstall "X Window System" "KDE ...

  2. c# 异步进度条组件BackgroundWorker

    //控件事件调用DoWork()方法就行. #region 进度条 private BackgroundWorker worker = null; private void DoWork(string ...

  3. UE4如何检测目标在锥形视野内

    转自:http://blog.csdn.net/l346242498/article/details/70237083 做UE4游戏AI方面经常会遇到一个问题,就是何如判定目标在AI单位的视野范围内, ...

  4. Centos7修改系统时区timezone

    第一步:查询服务器时间 [root@localhost ~]# timedatectl Local time: Sat 2018-03-31 01:11:46 UTC Universal time: ...

  5. Java - 15 Java 正则表达式

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达式和Perl的是最为相似 ...

  6. Linux TCP/IP调优-Linux内核参数注释

    固定文件的内核参数 下列文件所在目录: /proc/sys/net/ipv4/ 名称 默认值 建议值 描述 tcpsyn_retries 5 1 对于一个新建连接,内核要发送多少个SYN连接请求才决定 ...

  7. studio2.3app签名打包安装失败,找不到签名证书。

    Androidstudio升级到2.3后,打包时和之前不一样了. 如果只选择V2,是未签名的.所以要把V1和V2都打勾.

  8. 3-安装hive

    1.解压.修改权限 tar -zvxf apache-hive-1.2.1-bin.tar.gz -C /opt/app/ sudo chown -R hadoop:hadoop /opt/app/a ...

  9. 将16进制的颜色转为rgb颜色

    在前端面试过程中,常常会遇到这样一种类型的题目: 使用js将16进制的颜色值转为rgb颜色! 反而在项目中,不怎么遇到这种问题,也很少有这种需求的项目. 但毕竟面试中常常遇到,我自己在之前的面试的时候 ...

  10. 关于SqlServer2008小记(查询数据库连接数,强行干掉连接)

    查询连接数 select count(*) from master.dbo.sysprocesses 这条语句查出来的是所有连接到本机(或者连接到本服务器)的连接数,并非是某一个库的连接数. 查询连接 ...