package-info.java

简介: package-info.java 文件估计大家见过但是自己却很少去创建和使用它、因为对于一般应用来说可能真的太少见了。

package-info.java 文件估计大家见过但是自己却很少去创建和使用它、因为对于一般应用来说可能真的太少见了。


它的作用主要是三个

  • 描述包
  • 使用注解修饰包、达到修饰该包下的类
  • 声明包中使用的类和常量(这个比较少用)


描述包


package-info.java 文件

/**
 * 我是描述信息
 */
package com.demo.test.info;
复制代码

网络异常,图片无法展示
|

生成 JavaDoc 可以看到包的注释在说明列中


使用注解修饰包


假如某个包下、我们希望所有的返回值都应该非 Null、并且当我们编码的时候可以警告我们

那么我们可以在 package-info.java 文件中

@NonNullApi
package com.demo.test.info;
import org.springframework.lang.NonNullApi;
复制代码

网络异常,图片无法展示
|

可以调整为 Error 那么就会要求必须返回非 null 否则会影响编译。

当然除了返回值为非 null 、还会有其他的需求、比如说参数、成语变量、甚至 Deprecated 包中的所有类、都可以在 package-info 中进行修饰。

当然这个只限于当前包、没办法让子包继承父包的相关信息、所以每个子包都需要某个特性、那么就需要每个子包创建 package-info 文件。


声明类和常量


这个跟我们自己声明一个没有修饰符修饰的类是一样的、只不过是放在 package-info 文件中

@ParametersAreNonnullByDefault
@NonNullFields
@NonNullApi
package com.demo.test.info;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
import javax.annotation.ParametersAreNonnullByDefault;
class Constant{
    public static final String NAME = "CoderLi";
}
复制代码

最终使用了 org.eclipse.jdt.annotation 插件的注解声明非空


Maven 插件


最近组内想所有的返回值、所有的方法参数、类中的成员变量如果没有声明可以为 null 默认都是非 null

所以想着使用 package-info 来警告提示、本来想着写个 idea 插件每当创建 package 的时候勾选是否创建对应 package-info 文件、文件内容是个模板、如上面的代码。后来因为项目中存在某些框架非得要 eclipse 这个 ide (在 eclipse 基础上进行过改造)、不得已使用 maven 插件

当然可以直接使用 eclipse 的 jdt 包的注解NonNullByDefault

分享一篇相关的文章

juejin.cn/post/684490…

通过 maven 插件绑定到其中一个 phase 即可在使用 maven 的某个 phase 中递归创建 package-info 文件、当然也可以绑定 idea 运行前执行该插件的 goal 、这样子就能不执行 maven 命令就可以为每个 package 创建对应的 package-info 文件。



目录
相关文章
|
2月前
|
Java 数据安全/隐私保护
Java 包(package)的使用详解
Java中的包(`package`)用于组织类和接口,避免类名冲突并控制访问权限,提升代码的可维护性和可重用性。通过`package`关键字定义包,创建相应目录结构即可实现。包可通过`import`语句导入,支持导入具体类或整个包。Java提供多种访问权限修饰符(`public`、`protected`、`default`、`private`),以及丰富的标准库包(如`java.lang`、`java.util`等)。合理的包命名和使用对大型项目的开发至关重要。
|
3月前
|
Java Maven 数据库
|
5月前
Failed to bind properties under ‘logging.level‘ to java.util.Map java.lang.String, java.lang.String
Failed to bind properties under ‘logging.level‘ to java.util.Map java.lang.String, java.lang.String
34 0
|
6月前
|
IDE Java Unix
Java的class path的设置与应用
Java的class path的设置与应用
|
Java
【异常】Failed to bind properties under ‘logging.level‘ to java.util.Map<java.lang.String, java.lang.Str
【异常】Failed to bind properties under ‘logging.level‘ to java.util.Map<java.lang.String, java.lang.Str
227 0
|
存储 网络协议 Java
java基础 --- java包(package)
java基础 --- java包(package)
111 0
|
Java
什么是package-info.java
什么是package-info.java
385 0
|
存储 Java 开发者
[Java --- List]
我们之前实现过的顺序表,只能保存 int 类型的元素,如果现在需要保存 指向 Person 类型对象的引用的顺序表,请问应该如何解决?如果又需要保存指向 Book 对象类型的引用呢?
|
程序员
零基础学java---Debug
零基础学java---Debug
96 0
零基础学java---Debug
|
Java Maven
MessagePack Java 0.6.X 快速开始指南 - 安装
0.6.x 版本的 MessagePack 已经过期被淘汰了。如果你现在开始使用 MessagePack 话,请不要使用这个版本。 我们再这里保留 0.6.x 版本的内容主要用于参考用途。 最新的 MessagePack 版本请参考:https://github.com/msgpack/msgpack-java 中的项目源代码。
870 0