1.简介
package-info.java
是一个Java
文件,可以放到任意Java
源码包下执行。主要目的是为了提供包级别相关的操作,比如包级别的注解、注释及公共变量。
2.作用范围
2.1.提供包级别的注解
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
public @interface XXX {
}
// package-info.java
@XXX
@Deprecated // 标记包过期
package com.cn.xxx
// 查看包注解
String xxxName= "com.cn.xxx";
Package xxx= Package.getPackage(xxxName);
Annotation[] a1= xxx.getAnnotations();
for(Annotation item : a1){
if(item instanceof XXX){
System.out.println("XXX");
}
}
// 查看包下面对应的类的注解, 不存在Class
Class xxx1 = Class.forName("com.cn.xxx");
Annotation[] a2 = xxx1.getAnnotations();
for(Annotation item : a2){
if(item instanceof XXX){
System.out.println("XXX Class");
}
}
2.2.提供包级别的变量
/**
* 包类
*/
class PACKAGE_CLASS {
public void test() {
}
}
/**
* 包常量
*/
class PACKAGE_CONST {
public static final String TEST_01="TEST";
}
// 在包内的可以任意类调用包常量,不能在包外调用(会报错)
public class Client {
public static void main(String[] args) throws ClassNotFoundException {
System.out.println(PACKAGE_CONST.TEST_01);
}
}
2.3.提供包级别的注释
// package-info.java
/**
* 包描述
* <p>详细描述</p>
*
* @author author
* @version 1.0.0.0
* @since 2020-08-11
*/
@XXX
@Deprecated // 标记包过期
package com.cn.xxx