前言
之前在Eclipse中,总是会不小心勾选到这个复选框,之前并没有怎么在意这个java文件,毕竟生成之后只有以下这么点内容。
而且你也不能直接创建package-info文件,因为编辑器会报 Type name is not valid
错误,类名无效。我也尝试在上述生成的 package-info.java
文件中定义一个class,由于Java变量定义的规范是由字母、数字、下划线和 $
符号组成且首字母不为数字,不允许有 -
, 所以这个显然是行不通的。
所以我就很纳闷,这东西到底有什么作用?
作用
查看了一些资料,总结下,大概的情况就是 package-info.java
文件为包级文档和包级别注释提供一个地方。而且该文件唯一必须包含的是包的声明。例如上述创建的 package-info.java
文件中的 package com.bigsea.test
,与此同时,这个 package-info.java
也必须位于 com.bigsea.test
包中。
包文档
软件包的描述和其他相关文档可以写在 package-info.java
文件中,并用于生成 Javadocs
(关于如何生成 Javadocs
请自行谷歌或者百度,这里不做介绍)。
我这里做个示例。
包注释
package-info.java
文件包含包级别的注释。如以下图示。
我这里也同样的举个例子。
以我的工具包作为示例。比如你想弃用一个包中的所有类型。你可以通过使用 @Deprecated
注解每个单独的类型,或者,你可以在 package-info.java
中的 package
声明上使用 @Deprecated
。
在 com.bigsea.test
中新建一个 Test
类测试下。看到如下的结果。
也就是说,你在 package-info.java
中的 package
声明上使用 @Deprecated
,这样一来相当于贬低了对应包中的所有对应的类、接口、枚举等。