参考文章: 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的更多相关文章

  1. paip.自动import的实现跟java.lang.SecurityException Prohibited package name java

    paip.自动import的实现跟java.lang.SecurityException Prohibited package name java #-----自动import 因为java.lang ...

  2. Java报错信息 java.lang.SecurityException: Prohibited package name: java.xxx

    package java.yun.System; public class SystemOut { public static void main(String[] args) { System.ou ...

  3. java classpath import package 机制 @Java的ClassPath, Package和Jar

    java classpath import package 机制   從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...

  4. 如何在命令提示符下编译运行含有Package的java文件

    这篇是大二自学Java的时候记下的笔记,中午回顾印象笔记的时候意外看到了这篇.看到多年前写下的文字,我想起那时候我对Java的懵懵懂懂,每天晚上在图书馆照着书写书上的示例代码,为一个中文分号绞尽脑汁, ...

  5. 手动编译含package的java源程序(包含外部包中定义的类)

    1)定义一个GSM类,如下: 包名是“SRC.GSM”,并且此程序引用了外部jar包.使用javac命令对GSM.java进行编译: GSM.java所在的文件夹如下所示: 切换到这个目录为当前工作目 ...

  6. [JAVA] 日常填坑 java.lang.SecurityException: Prohibited package name: java.xxx

    java虚拟机不允许包名以java开头. https://blog.csdn.net/sinat_28690417/article/details/72328547

  7. 使用junit单元测试,报Cannot instantiate test(s): java.lang.SecurityException: Prohibited package name: java.com.com.test

    在测试类中不能一级包名不能以java开头, 将包改为com.com.test就好了.

  8. Java的Package和Classpath

    Package 在Java中,Package是用来包含一系相关实例的集合.这些相关联的实例包括:类.接口.异常.错误以及枚举. Package主要有一些的几点作用: Package可以处理名字冲突,在 ...

  9. Java 包(package)详解

    为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包也采用了树形目录的存储方式.同一 ...

  10. package、import、java及javac的相关介绍(转)

    Package: package中所存放的文件 所有文件,不过一般分一下就分这三种 1.java程序源文件,扩展名为.java: 2.编译好的java类文件,扩展名为.class: 3.其他文件,也称 ...

随机推荐

  1. 峰Redis学习(2)Jedis 入门实例

    参考博客:http://blog.java1234.com/blog/articles/314.html 第一节:使用Jedis 连接Redis 新建maven项目: pom.xml: <pro ...

  2. vue之v-on

    我们可以用 v-on 指令绑定一个事件监听器,通过它调用我们 Vue 实例中定义的方法: <!DOCTYPE html> <html lang="en"> ...

  3. opengl 入门浅学(一)

    因为要做图形学的实验,又是要以OPENGL为基础,所以就稍微在网上查了一些资料. 我是带着目的去学习的,所以就没有打基础之类的学很深,浅尝. 今天试着搭简单框架,画出一个图形.大神请出门左转. #in ...

  4. [C#]App.Config

    <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm. ...

  5. Python写的链接数据库存取数据

    Python写的链接数据库存取数据 #!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function im ...

  6. python的68个内置函数

    内置函数 内置函数就是python给你提供的, 拿来直接用的函数, 比如print., input等. 截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # ...

  7. hadoop ha环境下的datanode启动报错java.lang.NumberFormatException: For input string: "10m"

    hadoop ha环境启动start-dfs.sh的时候datanode启动不了,并且报错. [hadoop@datanode2 ~]$ cat /home/hadoop/hadoop-2.7.3/l ...

  8. 第一次软件工程作业——html制作一份简单的个人简历

    源码链接(码云):https://gitee.com/yongliuli/codes/eavjr7lxotb85s0icnq1z68 简历效果图展示: 代码展示: 添加背景音乐的方法: 在<he ...

  9. 知识点:Mysql 基本用法之事务

    事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 事务实例: create table user( id int primar ...

  10. Junit4简单使用

    一.Junit4是JAVA语言的单元测试框架,用于编写和运行可重复的测试,可以大大提高效率 1.使用Junit4必须在项目中导入Junit4.har文件 2.新建Junit Test case 勾选s ...