package-info.java
参考文章: http://blog.sina.com.cn/s/blog_93dc666c0101gzlr.html
对于package-info.java我们并不陌生,但又陌生。
在我们每次建立package包的时候会自动生成一个package-info.java文件。但这个文件内部并没有任何东西。
因-为特殊字符在java中不能作为文件名,因此我们不能在java中new Class的形式建立。
一种是建立一个package生成package-info.java,另一种是用文本编辑器建立一个文件复制进来。
package-info.java 属于特殊java文件,不同于以往的java文件。没有继承没有public、private修饰符
package-info.java作用:
- 为标注在包上Annotation提供便利;
- 声明友好类和包常量;
- 提供包的整体注释说明。
以下是例子:

其中 PackAnnotation注明作用到Package上:
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PackAnnotation {
}
package-info.java
/**
* 本包主要做测试用,用于学习package-info.java文件的作用.
* @author DennyZhao
*
*/
@PackAnnotation
package pack.info.test; import java.lang.annotation.Annotation; /**
* 本包单用Utils
* @author DennyZhao
*
*/
class CommonPackUtils{
public static void formatPackage(String packName) {
Package pack = Package.getPackage(packName);
Annotation[] annotations = pack.getAnnotations();
for(Annotation anno : annotations) {
System.out.println(anno.annotationType().getName());
}
}
}
/**
* 本包单用约束
* @author DennyZhao
*
*/
class CommonPackConstants{
public static final String PACK_NAME = "pack.info.test";
}
PackTest.java
public class PackTest {
public static void main(String[] args) {
CommonPackUtils.formatPackage(CommonPackConstants.PACK_NAME);
}
}
从以上例子可以看出:
1. 我们的公共类CommonPackUtils只能在本package中使用,子包和兄弟包都不能使用。
2. 注解的作用范围控制在包上,则除此之外无法调用。
3. pack-info添加注释,会作为package的javadoc而存在。
package-info.java的更多相关文章
- paip.自动import的实现跟java.lang.SecurityException Prohibited package name java
paip.自动import的实现跟java.lang.SecurityException Prohibited package name java #-----自动import 因为java.lang ...
- Java报错信息 java.lang.SecurityException: Prohibited package name: java.xxx
package java.yun.System; public class SystemOut { public static void main(String[] args) { System.ou ...
- java classpath import package 机制 @Java的ClassPath, Package和Jar
java classpath import package 机制 從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...
- 如何在命令提示符下编译运行含有Package的java文件
这篇是大二自学Java的时候记下的笔记,中午回顾印象笔记的时候意外看到了这篇.看到多年前写下的文字,我想起那时候我对Java的懵懵懂懂,每天晚上在图书馆照着书写书上的示例代码,为一个中文分号绞尽脑汁, ...
- 手动编译含package的java源程序(包含外部包中定义的类)
1)定义一个GSM类,如下: 包名是“SRC.GSM”,并且此程序引用了外部jar包.使用javac命令对GSM.java进行编译: GSM.java所在的文件夹如下所示: 切换到这个目录为当前工作目 ...
- [JAVA] 日常填坑 java.lang.SecurityException: Prohibited package name: java.xxx
java虚拟机不允许包名以java开头. https://blog.csdn.net/sinat_28690417/article/details/72328547
- 使用junit单元测试,报Cannot instantiate test(s): java.lang.SecurityException: Prohibited package name: java.com.com.test
在测试类中不能一级包名不能以java开头, 将包改为com.com.test就好了.
- Java的Package和Classpath
Package 在Java中,Package是用来包含一系相关实例的集合.这些相关联的实例包括:类.接口.异常.错误以及枚举. Package主要有一些的几点作用: Package可以处理名字冲突,在 ...
- Java 包(package)详解
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包也采用了树形目录的存储方式.同一 ...
- package、import、java及javac的相关介绍(转)
Package: package中所存放的文件 所有文件,不过一般分一下就分这三种 1.java程序源文件,扩展名为.java: 2.编译好的java类文件,扩展名为.class: 3.其他文件,也称 ...
随机推荐
- C#、AE开发入门之打开shp文件并显示
首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...
- 修改最后一次 已commit 的备注
输入命令 git commit --amend 会展示出最后一次提交的 备注信息 按 i 进行编辑 按esc 退出编辑 再按 shift +: (注意是英文的冒号),切换到命令行 wq 保存 即可 参 ...
- spring笔记-@Primary注解
1.问题 当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionExceptio ...
- 关于promise的几个认知
1. 为什么要有promise ···从代码上来说回避了回调嵌套的问题,其次promise可以保留异步请求的状态(即使得到结果不立刻执行回调,过一阵再执行仍然是可以的.) ···从思想上来说,我们设计 ...
- ctags使用
1:安装ctags sudo apt-get install exuberant-ctags ctags --help 2:建立源码之间的组织关系: 1:ctags ./*.c -R 生成tags文件 ...
- 微信小程序--swiper组件
<view class='swiper-container'> <swiper indicator-dots="true" autoplay=" ver ...
- QTimer的一些注意事项和探索
注意事项: 1.QTimer's accuracy depends on the underlying operating system and hardware.Most platforms sup ...
- 20165205 学习基础与C语言基础调查
学习基础和C语言基础调查 从<做中学>学到的经验 首先,在老师的这几篇文章中,最核心的一片文章就是<做中学>这一篇了,在文章中强调了不断联系的重要性,然后在学以致用的过程中发现 ...
- fabric-network_setup.sh安装脚本分析
在进行镜像安装前,提供了一个sample脚本的下载,可以使用该脚本进行容器的启停.这里对该脚本进行分析. fabric/release/linux-amd64/network_setup.sh 脚本提 ...
- [转]asp+oracle分页
PageSize:每页显示的记录数.PageCount:根据用户设定好的PageSize和表中的总记录数,系统自动算出总页数.RecordCount:表中的总记录数.AbsolutePage:表示当前 ...