我是靠谱客的博主 苗条美女,最近开发中收集的这篇文章主要介绍Java学习系列:package-info.java的作用场景环境正文总结随缘求赞,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 场景
  • 环境
  • 正文
    • 介绍
    • 用途
      • 一、提供包级别的注解
        • 介绍
        • 样例
      • 二、提供包级别的变量
        • 介绍
        • 样例
      • 三、提供包级别的注释
        • 介绍
        • 样例
  • 总结
  • 随缘求赞

场景

学习spring-kafka开源源码的时候,发现每个目录都有一个package-info.java文件,查找其用法,并整理出来。

环境

软件版本
spring-boot2.1.8.RELEASE
spring-kafka2.2.8.RELEASE
JDK8
intellij idea2019.1

正文

介绍

package-info.java是一个Java文件,可以放到任意Java源码包执行。不过里面的内容有特定的要求,其主要目的是为了提供包级别相关的操作,比如包级别的注解、注释及公共变量。

用途

一、提供包级别的注解

介绍

在对应的源码包提供包级别的注解

样例

  1. 创建包注解

    @Target(ElementType.PACKAGE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TestPkg {
    
    }
    
  2. package-info.java添加注解

    @TestPkg
    package com.exercise.data_collection_error_info_transformation.component;
    
  3. 查看对应的包的注解

    public class Client {
        public static void main(String[] args) throws ClassNotFoundException {
        	// 查看包注解
            String pkgName = "com.exercise.data_collection_error_info_transformation.component";
            Package pkg = Package.getPackage(pkgName);
            Annotation[] annotations = pkg.getAnnotations();
            for(Annotation an:annotations){
                if(an instanceof TestPkg){
                    System.out.println("Hi,I'm the TestPkg");
    
                }
            }
    
    		// 查看包下面对应的类的注解
            Class test = Class.forName("com.exercise.data_collection_error_info_transformation.component.Test");
            Annotation[] annotations2 = test.getAnnotations();
            for(Annotation an:annotations2){
                if(an instanceof TestPkg){
                    System.out.println("Hi,I'm the Class TestPkg");
                }
            }
        }
    }
    

    结果如下,只输出对应的包的注解,包内部的类是没有该注解的。

    Hi,I'm the TestPkg
    
  4. Deprecated注解的使用
    如果一整个包都是过时的话,可以直接在package-info.java下面,添加注解@Deprecated,表示该源码包已过时。如图:
    在这里插入图片描述

二、提供包级别的变量

介绍

如果想在包里面使用对应的变量,而不想让其他包使用,就可以将变量放到package-info.java下面,实现分包自用的理念。

样例

  1. package-info.java添加以下内容:

    /**
     * 包类
     */
    class PACKAGE_CLASS{
        public void test(){
        }
    }
    
    /**
     * 包常量
     */
    class PACKAGE_CONST{
        public static final String TEST_01="TEST";
    }
    
  2. 在包内的任意类调用包常量,未报错:

    public class Client {
        public static void main(String[] args) throws ClassNotFoundException {
            System.out.println(PACKAGE_CONST.TEST_01);
        }
    }
    

    截图如下:
    在这里插入图片描述

  3. 在包外的任意类调用包常量,提示报错:

    public class Client {
        public static void main(String[] args) throws ClassNotFoundException {
            System.out.println(PACKAGE_CONST.TEST_01);
        }
    }
    

    截图如下:
    在这里插入图片描述

三、提供包级别的注释

介绍

使用JavaDoc的时候,通过在package-info.java添加注释,生成JavaDoc实现对应包的注释说明。

样例

  1. 添加对应的包的注释

    /**
     * 描述: Spring组件<br>
     * 项目名称: data_collection_error_info_transformation <br>
     * 创建时间: 2020/5/6 12:59 <br>
     * 公司信息: 凯通科技股份有限公司 产品研发中心-大数据产品<br>
     *
     * @version v1.0
     */
    @TestPkg
    @Deprecated
    package com.exercise.data_collection_error_info_transformation.component;
    
  2. 生成对应的JavaDoc文档,截图如下: 在这里插入图片描述
    点击component的链接,截图如下:
    在这里插入图片描述

总结

在学习开源源码的时候,看到package-info.java,不知道为什么,特意去找资料学习,并进行总结。当我们在学习开源源码的时候,可以学习到很多东西,也在不断地补充自己的知识盲区。不过,也要自己多记笔记,多问自己为什么,做到“知其所以然”,稳扎稳打。

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注
拜拜

最后

以上就是苗条美女为你收集整理的Java学习系列:package-info.java的作用场景环境正文总结随缘求赞的全部内容,希望文章能够帮你解决Java学习系列:package-info.java的作用场景环境正文总结随缘求赞所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部