package-info.java对于日常业务开发的开发者来说,可能有点陌生,如果我们再项目中创建一个package-info.java,你会发现该类只有一个packge,如下
![e51cb88f186a6e02b6342904bd11e73e.png](https://i-blog.csdnimg.cn/blog_migrate/c5d3ebebf48503db6055a387e812f824.jpeg)
![955bba4469802aa397d8aeaca0d26bf5.png](https://i-blog.csdnimg.cn/blog_migrate/d3451df15b885231aec35376933bb5b0.jpeg)
我们无法在该java文件中定义public的类
![979cb5862756148624b7d288dd4f7e9a.png](https://i-blog.csdnimg.cn/blog_migrate/dd5306648ea6e9b3779b0957b32ddc48.jpeg)
但事实上,package-info.java还有它的作用和使命。
我们来看下,最常见的作用
包说明
package-info.java可以描述一个包的作用,常常我们定义包,如果包中没有内容,包名会自动到下一层,如下图
![a5e541b312756cf7a6871b630c8fef56.png](https://i-blog.csdnimg.cn/blog_migrate/e6b98b391173deb19ae9d666aaeacc65.jpeg)
可以通过给a包下面添加package-info.java做一些说明,从而让包有层级
![858e7860db74ad3e9c1b0173cf513157.png](https://i-blog.csdnimg.cn/blog_migrate/274088822a80f3e63aa789a9735b1f06.jpeg)
同时添加一些说明
![4797e07208cce381864019faed517b9e.png](https://i-blog.csdnimg.cn/blog_migrate/7d8f8e8220b7d37d9fded398e4922cc7.jpeg)
添加注解
前面我们介绍过Java注解,详情可看 Java注解开发及原理
注解中有一种作用域package,如下图
![ea6cbcf5bf46b06d32c85ef29359292c.png](https://i-blog.csdnimg.cn/blog_migrate/59949d8ac2e41a45c045645060bd90b1.jpeg)
代码中可以通过反射拿到注解,对某一包下面的类做一些定制化的操作,如下图
![6523c26bf75e53179a51bc6a555f7aeb.png](https://i-blog.csdnimg.cn/blog_migrate/71fc9ec54ee3434879583665712b080c.jpeg)
声明友好类和包常量
虽然package-info中不能定义public和private的类,我们可以定义friendly的类及包常量,提供给统一包下面的类进行共享,如下
![b0517712a208a9386aa1b5b3d51bc038.png](https://i-blog.csdnimg.cn/blog_migrate/b6dec3948de2a3f4742f895db478aafb.jpeg)
包中的类,可以直接使用,如下
![fb8e487461dcd0a323e6a7ee29c4d4a4.png](https://i-blog.csdnimg.cn/blog_migrate/676c958a3b10b4a850137b689e4fa8ba.jpeg)
看到这里,相信大家已经知道了package-info的作用了。