zoukankan      html  css  js  c++  java
  • 注解

    注解

    注解 ( Annotation ) 可以增强我们的java代码,同时利用反射技术可以扩充实现很多功能。它们被广泛应用于三大框架底层。传统我们通过xml文本文件声明方式,而现在最主流的开发都是基于注解方式,代码量少,框架可以根据注解去自动生成很多代码,从而减少代码量,程序更易读。例如最火爆的SpringBoot就完全基于注解技术实现。

    注解的出现优化了程序的编程,减少了代码的编写。注解Annotation的标志是@ ,每个注解都有不同的功能。

    注解分类

    分为JDK自带注解, 元注解 和 自定义注解 (常用注解背景为深色)

    JDK自带注解

    • @Override 重写方法注解 (常用)
    • @Deprecated去除已过时横线
    • @SuppressWarnings(“deprecation”) 忽略警告woring
    • @SafeVarargs jdk1.7出现,堆污染,不常用
    • @FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用

    元注解

    • @Target用来描述注解的存在位置。他的值被维护在了ElementType.class中。ElementType是一个枚举类

      参数(可传入多个):

      参数 描述
      ElementType.TYPE 应用于类的元素
      ElementType.METHOD 应用于方法级
      ElementType.FIELD 应用于字段或属性
      ElementType.ANNOTATION_TYPE 应用于注解上
      ElementType.CONSTRUCTOR 应用于构造方法
      ElementType.LOCAL_VARIABLE 应用于局部变量
      ElementType.PACKAGE 应用于包声明
      ElementType.PARAMETER 应用于方法的参数
    • @Retention用来描述注解的生命周期。值被维护在了RetentionPolicy.class

      参数(只能传入一个):

      参数 说明
      SOURCE 在源文件中有效(即源文件保留
      CLASS 在class文件中有效(即class保留)
      RUNTIME 在运行时有效(即运行时保留)
    • @Inherited允许子注解继承

    • @Documented 生成javadoc时会包含注解,不常用

    • @Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

    自定义注解

    定义格式:

    @interface 注解名 {
        // 定义注解属性等...
    }
    

    属性:

    例如自定义注解体中写入 String name(); 或者 int age(); ,

    也可以设置默认值: String name() default "jack";

    如果属性的名称是value 则使用注解的时候可以不写属性名

    示例代码:

    // 自定义注解 : @interface 注解名
    // @Target指定注解可以出现的位置
    @Target({ElementType.TYPE, ElementType.FIELD}) // 类上和属性上
    // @Retention 指定注解声明周期
    @Retention(RetentionPolicy.SOURCE) // 源码的时候有效
    @interface Test {
        // 给注解加功能
        String name();
        // 属性设置默认值
        int age() default 22;
    }
    
    // 使用注解
    @Test(name = "HelloTest")
    class HelloTest {
        @Test(name = "HelloTest")
        String name;
    
        // @Test 不能在这里使用
        public void test() {
            System.out.println("test");
        }
    }
    
  • 相关阅读:
    Linux学习之网络基础
    C# 随笔
    最牛B的编码套路
    c++ Primer 第七章不熟悉知识点总结
    oracle求表的倒数二行数据
    c++ Primer 第六章不熟悉知识点总结
    c++ Primer 第五章不熟悉知识点总结
    c++ Primer 第四章不熟悉知识点总结
    c++ Primer 第三章不熟悉知识点总结
    骑驴找马
  • 原文地址:https://www.cnblogs.com/zpKang/p/12955144.html
Copyright © 2011-2022 走看看