package-info.java 作用及用法详解 - 点滴记忆*记忆点滴
收藏本站

package-info.java 作用及用法详解

这个文件的特殊性说完了,那再说说它有什么作用,它有三个作用:
  1. 为标注在包上Annotation提供便利;
  2. 声明友好类和包常量;
  3. 提供包的整体注释说明。

    我们来建立一个项目演示这三个作用,建立一个package-info的Java Project,在com.company包三个类:package-info.java是我们重点关注的,PkgAnnotation.java是一个标注在包上的注解定义,Client.java模拟业务操作类。其结构如下图:


点击查看原图

 

为标注在包上Annotation提供便利

     首先定义一个包类型的注解,它只能放置的一个包上:

Java代码  


    /** 
     * 定义只能标注在package上的注解 
    */  
    @Target(ElementType.PACKAGE)  
    @Retention(RetentionPolicy.RUNTIME)  
    public @interface PkgAnnotation {  
    } 

 再定义一个package-info类,这个是一个特殊的类,先看代码:

@PkgAnnotation  
package com.company; 

 很简单,就这么个文件,里面啥都没有,就这两句话,没有class类,没有常变量声明。接着写一个模拟交易类,代码如下

Java代码:

    public class Client {     
        public static void main(String[] args) {  
            //可以通过I/O操作或配置项获得包名  
            String pkgName = "com.company";       
            Package pkg = Package.getPackage(pkgName);  
            //获得包上的注解  
            Annotation[] annotations = pkg.getAnnotations();  
            //遍历注解数组  
            for(Annotation an:annotations){  
                if(an instanceof PkgAnnotation){  
                    System.out.println("Hi,I'm the PkgAnnotation");  
                    /* 
                     * 注解操作 
                     * MyAnnotation myAnn = (PkgAnnotation)an; 
                     * 还可以操作该注解包下的所有类,比如初始化,检查等等 
                     * 类似Struts的@Namespace,可以放到包名上,标明一个包的namespace路径 
                     */           
                }  
            }  
        }  
    }  

      运行结果如下所示:

Hi,I'm the PkgAnnotation!

    留下足迹