JAVA_Package
Javaの名前空間の仕組みの1つにパッケージがあります。大規模開発では必須の概念です。また、他人の作ったコードの再利用という観点でも、パッケージを正しく活用する必要があります。
・完全修飾名:パッケージ名まで含めたクラスやインターフェースの呼び名
・単純名:パッケージ名を除いたStringの部分(クラス名)
パッケージで実現できることは
・名前空間
・意味的なまとまりの管理(クラスの設計同様、パッケージの設計も責務の分割が目的)
・アクセス制御(Javaのデフォルトアクセス制御は、パッケージ内からしかアクセスできない制御)
パッケージ名にインターネットドメイン名(DNSドメイン名)を推奨する。(DNSやURLと逆順)
習慣として、型名は大文字で始まる名前、パッケージ名は全て小文字にします。
パッケージの宣言はファイルの先頭に「package packageの完全修飾名;」を書く(相対パスのような表記はない)
クラス名とインターフェース名がファイル名に制約をつけるように、パッケージ名はディレクトリ名に制約をつけます。(必須ではない)
java.langパッケージは暗黙にインポートする。
単純名を書いた時の名前解決の順序は、
・そのファイル内で定義する型名
・単一型インポートした型名
・同じパッケージ内の型名
・オンデマンドインポートした型名
曖昧さが発生する場合、面倒でも完全修飾名で型名を書くことを進めます。
単純名の衝突を防ぐ指針は、
・標準ライブラリの型名と同名は避ける
・オンデマンドインポート(「*」を使ったインポート)をなるべく避ける
staticインポートはパッケージ内のクラス及びインターフェースのstaticメンバ名をインポートします。(慎重に)
クラスとインターフェースは、public修飾子を
・付けている場合、publicスコープ
・付けていない場合、パッケージスコープ
インターフェースだけをパッケージの外にさらして、実装クラスをパッケージ内に隠蔽する技法はよく使います。
パッケージ宣言文がない場合、名前なしパッケージと見なされます。名前なしパッケージもパッケージの1つです。
JAVA_Package的更多相关文章
- hbase协处理器编码实例
Observer协处理器通常在一个特定的事件(诸如Get或Put)之前或之后发生,相当于RDBMS中的触发器.Endpoint协处理器则类似于RDBMS中的存储过程,因为它可以让你在RegionSer ...
- gRPC源码分析0-导读
gRPC是Google开源的新一代RPC框架,官网是http://www.grpc.io.正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3.虽然目前在工程化方 ...
- dubbox 增加google-gprc/protobuf支持
好久没写东西了,今年实在太忙,基本都在搞业务开发,晚上来补一篇,作为今年的收官博客.google-rpc 正式发布以来,受到了不少人的关注,这么知名的rpc框架,不集成到dubbox中有点说不过去. ...
- Cocos2d-JS/Ajax用Protobuf与NodeJS/Java通信
原文地址:http://www.iclojure.com/blog/articles/2016/04/29/cocos2d-js-ajax-protobuf-nodejs-java Google的Pr ...
- Android Log Tag含义
在分析Android问题的时候重要的手段之一就是分析log,在events.log中有很多系统log,其中有些log的含义并不是很了解,下面就是从安卓源码中得到的系统log的tag. 关于Tag的说明 ...
- Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据
Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现, ...
- golang下的grpc
facebook的thrift也是开源rpc库,性能高出grpc一倍以上,grpc发展的较晚,期待以后有长足的进步.简单来说thrift = grpc + protobuf gRPC基于HTTP/2标 ...
- hbase 协处理器
一.服务端1.安装Protobuf2.RPC proto 定义文件:Examples.protooption java_package = "org.apache.hadoop.hbase. ...
- protobuf初体验
概念介绍 Protocol buffers 是google公司的与语言无关.与平台无关的.可扩张的为序列化话结构数据,就像xml一样,办事更加的小巧.快速.简单.Protocol buffers 目前 ...
随机推荐
- [UE4]碰撞的随机性
物理引擎(包括碰撞)的计算具有随机性 原因: 一.每一帧的时间并不是严格相等 二.浮点数计算不是完全准确(两个浮点数运算,结果不可重复) 影响 在左边窗口(服务器端)打几发子弹把其中3个立方体的位置打 ...
- github webhook 实现代码自动部署 踩坑!! 附加git&coding webhook部署代码
踩坑: 1.php程序执行linux命令是以webserver的user用户(如apache .www……)操作的,需要在/etc/sudoers添加用户免密码操作权限; %apache ALL=(A ...
- SCCM2012 R2实战系列之十一:解决OSD分发Windows7 系统盘盘符为’D’问题
在SCCM 2012 R2操作系统分发(OSD)中,大家最早做的实验可能就是分发干净的Windows7和Windows 8(或Windows8.1)了吧.但是不可面对的问题就是相同配置的任务序列(只是 ...
- linux下开启某个端口的方法:可用于SQL
- C#提取双引号中的字符串
public static void Main(string[] args) { string strtmp = "123\"456\"qqq\"789\&qu ...
- 解决IIS7下主机名灰色无法修改问题
打开IIS ,找到网站,右击编辑绑定时: 关于导入iis .pfx格式的证书后,编辑绑定时,主机名为灰色的问题 解决方法 : (1)打开C:\Windows\system32\inetsrv\co ...
- 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared。
[已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no enc ...
- WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)
先说明思路:一个故事版Storyboard,两个双精度动画帧DoubleAnimation. 一个一个执行的原理:控制动画开始时间(例如第一个动画用时2秒,第二个动画就第2秒起开始执行.) XAML: ...
- rem 布局的闪现问题
<script type="text/javascript"> var sizeRate = document.documentElement.clientWidth/ ...
- jq check 复选变单选。
$("input[type='checkbox']").on("click",function(e){ var $checked = $("input ...