网站首页 > 技术文章 正文
package-info.java 介绍
pacakge-info.java 是一个 Java 文件,目标是提供一个包级的文档说明及包级的注释。在 Java 5 之前,包级的文档是 package.html,是通过 JavaDoc 生成的。而在 Java 5 之后版本,包的描述以及相关的文档都可以写入 pacakge-info.java 文件。
创建 package-info.java
pacakge-info.java 不能随便被创建,会报 This is not a valid Java qualified name 错误,类名无效,因为类名不能包括 -,那么怎么创建这个文件呢?
创建一个普通的文件,文件名设置为 package-info.java 即可,或者从其它项目中复制一个。
pacakge-info.java 只需要声明 package。
package com.test;
package-info.java 用途
提供包级别的注释
为 package-info.java 添加注释
/**
* 测试 package-info 的包注释功能
*
* @author mimi
* @since 1.0.0-RELEASE
* @version 2.0.0-RELEASE
*/
package com.test;
执行 javadoc 之后查看效果图
- 如何在 idea 中执行 javadoc
Tools -> Generate JavaDoc,选择 Output directory,在 Othre Command line arguments 中填入 -encoding utf-8 -charset UTF-8,用于解决中文乱码问题。
提供包级别的注解
自定义一个注解
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PackageAnnotation {
}
在 package-info.java 上添加注解,注解加在 package 之上,注解的地方与平常用的注解稍有不同
@PackageAnnotation
package com.test;
获取包注解
public class Test {
public static void main(String[] args) {
System.out.println("Package Annotation:");
Arrays.stream(Test.class.getPackage().getAnnotations())
.forEach(System.out::println);
System.out.println();
System.out.println("Class Annotation:");
Arrays.stream(Test.class.getAnnotations())
.forEach(System.out::println);
}
}
输入结果如下,通过包可以获取到包的注解。
Package Annotation:
@com.test.PackageAnnotation()
Class Annotation:
@Deprecated 的使用
@Deprecated 可以作用在一个类,一个方法或者一个变量上,意味着被标记的元素是过时的,在之后的版本可能不再支持,不建议使用。但如果是一整个功能下线,@Deprecated 也可以作用在包上,将整个包标记为过时。
@Deprecated
package com.test;
提供包级别的变量
package-info.java 中只能声明 default 默认访问权限的类,只能包内访问,其它包包括子包都不可访问。
package com.test;
class Constant {
static final String PACKAGE_NAME = "Test";
}
同一个包下使用
public class Application {
public static void main(String[] args) {
System.out.println(Constant.PACKAGE_NAME);
}
}
- 上一篇: Java—类加载的基本机制和过程
- 下一篇: Java的加载与执行
猜你喜欢
- 2025-01-03 Java 关键字之 native 详解
- 2025-01-03 三石说:java中常用的几个类
- 2025-01-03 反射、枚举以及Lambda表达式
- 2025-01-03 Java 新手教程,建议收藏
- 2025-01-03 Java零基础入门,科普Java你应该了解什么
- 2025-01-03 Java 代码执行原理
- 2025-01-03 揭秘双亲委派模型:Java类加载的“幕后英雄”
- 2025-01-03 你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
- 2025-01-03 Java中的枚举,这一篇全了,一些不为人知的干货
- 2025-01-03 Java反编译工具
- 1508℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 520℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 490℃MySQL service启动脚本浅析(r12笔记第59天)
- 469℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 467℃启用MySQL查询缓存(mysql8.0查询缓存)
- 447℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 427℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 424℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)