注解

作者: 月寒兮夜凉 | 来源:发表于2016-11-03 16:44 被阅读73次

优秀文章

博客园:
peida > Annotation的基本概念自定义注解入门


说明

  • 自JDK1.5版本开始引入;
  • 只可包含成员变量;
  • 本身不会影响程序代码的执行;
  • 可以为程序元素(包、类、方法、属性、参数)提供特殊标记(注解),这些标记可嵌入信息(元数据),并且在程序运行时通过反射机制来获取这些信息;
  • 元数据(metadata),关于数据的数据;
  • 根据注解参数可分:标记注解(无参)、单值注解(单个参数)、完整注解(多个参数);
  • 根据注解用途可分:内置注解、元注解(注解的注解)、自定义注解;

系统内置标准注解

  1. @Override:用于修饰覆盖了父类方法的方法
    只可用于方法,若使用该注解的方法确实覆盖了父类的方法,则代码编译正常,若没有,则代码编译报错,常用于判断方法重写;
  2. @Deprecated:用于修饰已经过时的类成员
    使用该注解标记的类成员,编译器将不再鼓励使用这个类成员(编译时报警),并且该类成员通过继承被子类获得,同样具备该效果(延续性);
  3. @SuppressWarnnings:用于通知java编译器禁止特定的编译警告
    通常用于无法避免警告的程序元素,告诉编译器停止对该元素的警告,SuppressWarnnings注解具备一个String[]的成员,成员中可添加禁止的警告名(编译器会忽略无法识别的警告名);

自定义注解

  • 元注解(meta-annotation)
    • 说明:JDK1.5中定义了4个标准元注解,元注解与其他注解(内置标准注解除外)不同在于元注解是组成注解的重要组成部分,前者只用作描述(注解)后者,后者被前者描述(注解)才具备实际的注解功能;
      1. @Target(ElementType):用于描述注解的使用范围
      • 使用范围取值(ElementType):
        <1>FIELD:用于描述域
        <2>PACKAGE:用于描述包
        <3>TYPE:用于描述类、接口(包括注解类型) 或enum声明
        <5>METHOD:用于描述方法
        <6>PARAMETER:用于描述参数
        <7>LOCAL_VARIABLE:用于描述局部变量
      1. @Retention(RetentionPoicy):用于描述注解的有效范围
      • 有效范围取值(RetentionPoicy):
        <1>SOURCE:在源文件中有效
        <2>CLASS:在class文件有效
        <3>RUNTIME:在运行时有效
      1. @Documented:用于声明注解的可识别性
      • 说明:注解是不被javadoc等工具处理的,若注解使用@Documented描述,则可被javadoc等工具识别并文档化(生成API);
      1. @Inherited:用于描述注解的延续性,只作用于类
      • 说明:类上的注解是不会被继承的,若注解使用@Inherited描述,则该类注解可以被继承并还可继续被继承;
      • 注意:方法上的注解通常是可以被继承的,但是子类若重写了父类的方法,则此方法上的注解则无法继承得到;
  • 自定义
    • 接口:java.lang.annotation.Annotation
    • 声明:@interface
    • 格式:
      @meta-annotation
      public @interface 注解名 {
          public type name() default value;
      } 
      
    • 成员可为:所有基本数据类型、String、Class、enum、Annotation、及前面所有类型的数组;
    • 默认值:注解成员必须有确定的值,要么在定义时使用默认值,要么在使用时指定值,且非基本类型的成员值不能为null;
  • 实例
    //使用@Target元注解描述作用范围
    @Target(ElementType.TYPE)
    public @interface TestAnnotation{
        //int类型成员
        public int intType() default -1;
        //String类型成员
        public String strType() default "";
        //enum类型成员
        public enum Color{BULE,RED,GREEN};
    }
    
***
####最后
* 通过反射可获取注解信息;
* 注解的存在与否不影响代码的运行,但针对注解设计有效的处理流程可实现注解的价值;

相关文章

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • 注解的使用

    元注解 注解 注解本质就是接口: 元注解:修饰注解的注解 自定义注解 Text.java FruitName.ja...

  • 注解

    Java注解 注解 元注解 自定义注解 元注解:负责注解其他注解 共有4个标准的meta-annotation类型...

  • Spring高级应用之组合注解和元注解

    1.核心概念: 元注解:可以注解在其他注解上的注解;被注解的注解成为组合注解; 2.组合注解的定义步骤 定义组合注...

  • 2016.10.13-关于注解的自定义和注解的解析

    注解可以分为:1、标识性注解(没有成员变量) 2、注解 3、元注解(注解的注解) 1、注解的自定义 自定义注解的格...

  • 自定义注解

    注解分类 1、代码注解2、编译时注解3、运行时注解 注解范例 使用注解的类 注解解析类 注解实战 需求1、有一张用...

  • 【JAVA】注解

    元注解 用来定义、声明注解的注解。 @Inherited注解 使用此注解声明出来的自定义注解,在使用此自定义注解时...

  • Spring Boot常用注解

    注解速览 配置加载相关 Bean 声明注解 Bean 注入注解 SpringMVC 注解 MyBatis 注解 配...

网友评论

    本文标题:注解

    本文链接:https://www.haomeiwen.com/subject/qnabuttx.html