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 文件。



目录
打赏
0
0
0
0
1
分享
相关文章
mybatis批量更新数据三种方法效率对比【Mysql】
mybatis批量更新数据三种方法效率对比【Mysql】
4275 0
mybatis批量更新数据三种方法效率对比【Mysql】
构建安全软件开发:DevSecOps助你一臂之力!
DevSecOps — 在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中 SDLC—软件交付生命周期 SCA—软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞 SAST—静态分析安全测试 DAS—动态分析安全测试 IAST—交互式分析安全测试 SBOM— 在这里特指软件中使用开源组件的完整信息列表
400 0
maven install报错原因揭秘:‘parent.relativePath‘指向错误的本地POM文件
在使用Maven构建项目时,遇到'parent.relativePath'错误通常是由于父项目POM路径设置错误、版本不一致或内容不匹配导致的。解决方法包括:校正父项目POM的相对路径、确保版本一致、保持POM文件内容同步,并排查其他潜在问题,如子模块命名冲突和Maven缓存问题。通过这些步骤可解决该错误,避免项目构建失败。
maven install报错原因揭秘:‘parent.relativePath‘指向错误的本地POM文件
Java 模块化详解
Java 9引入了一项重要的功能:模块化(Module System)。模块化是一种将代码和资源封装到可重用和独立的单元中的方法,它有助于改善代码的可维护性、可重用性和安全性。本文将介绍Java模块化的基本概念、如何创建和使用模块以及一些最佳实践。
881 0
|
11月前
|
Spring Boot 接口返回文件流
Spring Boot 接口返回文件流
462 0
使用Python进行数据清洗的实用指南
在数据分析的世界里,"垃圾进,垃圾出"这句老话再贴切不过。数据清洗作为数据分析前的关键步骤,直接影响着分析结果的准确性与可靠性。本文将通过浅显易懂的语言和实际代码示例,带你掌握如何使用Python及其强大的库进行数据清洗,从缺失值处理到异常值检测,再到数据格式转换和重复数据删除,让你的数据准备工作变得既高效又专业。
453 2
糊涂工具类(hutool)post请求设置body参数为json数据
糊涂工具类(hutool)post请求设置body参数为json数据
阿里云redis安装
阿里云redis安装
256 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等