• java中的注解


    1. 认识注解

    注解:即 Annotation ,是从 JDK 5.0 开始引入的东西,不是什么新玩意了

    作用:(1)对程序做出解释(2)可以被其它程序读取

    格式:以 “@注解名称” 的形式在代码中存在,如 @Override 、@SuppressWarnings(value=“unchecked”)

    使用场景:可以附加在包、类、方法、属性这些东西上面,相当于给这些东西添加额外的辅助信息,后面可以通过反射机制编程实现对这些元数据的访问

    2. 内置注解

    @Override

    这个注解定义在 java.lang.Override 中,适用于修饰方法,表示一个方法打算重写超类中的另一个方法

    @Deprecated

    这个注解定义在 java.lang.Deprecated 中,可以用于修饰方法、属性或者类

    被这个注解所修饰的方法、属性或者类,表示不建议再去使用,要用更佳的选择

    @SuppressWarnings

    这个注解定义在 java.lang.SuppressWarnings 中,用于抑制编译时的警告信息

    与前面两个注解不同的是,要使用这个注解,得为它添加参数,而需要的参数已经定义好,可以直接选择,例如:

    • @SuppressWarnings(“all”)
    • @SuppressWarnings(“unchecked”)
    • @SuppressWarnings(value={“unchecked”,“deprecation”})

    3. 元注解

    元注解的作用:用于标注其它注解,对其它注解作出说明

    java 定义了 4 个标准的元注解,分别是 @Target、@Retention、@Documented、@Inherited

    • @Target:用于描述注解的使用范围(如被描述的注解是用在类上、方法上还是属性上)
    • @Retention:表示需要在什么级别保存该注解信息,用于描述注解的生命周期(SOURCE < CLASS < RUNTIME)
    • @Documented:说明该注解将被包含在 javadoc 中
    • @Inherited:说明子类可以继承父类中的该注解

    元注解,一般是在自定义注解的时候会使用到,而且 4 个元注解,并不需要同时一起使用,需要用到哪个就加哪个,例如下面的 @Autowired 直接的定义

    在这里插入图片描述

    4. 自定义注解

    自定义一个注解 @MyAnnotation

    package com.javabasic.annotation;
    
    import java.lang.annotation.*;
    
    /**
     * @Description 自定义注解
     * @InterfaceName MyAnnotation
     * @Author yuhuofei
     * @Date 2022/9/18 11:26
     * @Version 1.0
     */
    @Target({ElementType.TYPE, ElementType.METHOD})
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    public @interface MyAnnotation {
    
        /**
         * 描述信息
         */
        String value() default "";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在代码中使用自定义的注解

    package com.javabasic.annotation;
    
    /**
     * @Description 测试自定义注解的使用
     * @ClassName TestAnnotation
     * @Author yuhuofei
     * @Date 2022/9/18 11:32
     * @Version 1.0
     */
    public class TestAnnotation {
    
        @MyAnnotation(value = "打印出两个整数之和")
        public static void printResult() {
            int a = 39;
            int b = 54;
            int result = a + b;
            System.out.println(result);
        }
    
        public static void main(String[] args) {
            printResult();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    自定义注解的描述信息不会在控制台打印出来,自定义注解的用途在反射、自定义切面时会有很好的体现

    要点:

    • @interface 用来定义一个注解,格式 public @interface 注解名 { 定义的内容 }
    • 注解中的每一个方法就是一个配置参数
    • 注解中,方法的名称就是参数的名称,返回值类型就是参数的类型
    • 默认值可以通过 default 来声明
    • 如果注解中只有一个参数,一般参数名为 value
    • 注解元素必须要有值,一般用空字符串、0 作为默认值
  • 相关阅读:
    Maxwell 一款简单易上手的实时抓取Mysql数据的软件
    requests 库:发送 form-data 格式的 http 请求 (python)
    npm ERR! code ELIFECYCLE
    【机器学习入门项目10例】(九):聚类算法用于降维,KMeans的矢量量化应用(图片压缩)
    [附源码]Python计算机毕业设计 家乡旅游文化推广网站
    java毕业设计软件基于SpringBoot在线电影订票|影院购票系统
    从元宇宙到Web3.0,“新赛道”的职场人该怎么找工作?
    Java常用类String
    88.(cesium篇)cesium聚合图
    【异常】com.alicp.jetcache.CacheException: refresh error
  • 原文地址:https://blog.csdn.net/Crezfikbd/article/details/126905674