zoukankan      html  css  js  c++  java
  • 六、自定义注解

    一、自定义注解的语法

    使 用 @interface 定 义 自 定 义 注 解 时 , 自 动 继 承 了 java.lang.annotation.Annotation 接口

    1) @interface 用来声明一个注解

    2) 其中的每一个方法实际上是声明了一个配置参数

    a) 方法的名称就是参数的名称

    b) 返回值类型就是参数类型(返回值类型只能是基本 类型、Class、String、enum)

    c) 可以通过 default 来声明参数的默认值 d) 如果只有一个成员,一般参数名为 value

    注意事项:

    • 注解元素必须要有值。我们定义注解元素时,经 常使用空字符串,0 作为默认值。
    • 也经常使用负数(比如-1)表示不存在的含义

    二、 元注解

            元注解的作用就是负责注解其他注解。在 Java 中定义了 4 个标准的 meta-annotation 类型,它们被用来提供对其它 annotation 类型作说明

            这些类型和它们所支持的类在java.lang.annotation包中可以找到

    1) @Target 2) @Retention 3) @Documented 4) @Inherited

    三、@Target

    作用:用于描述注解的使用范围(即被描述的注解可以用在什 么地方)

     举例:@Target(value=ElementType.TYPE)

    四、@Retention 

    作用:表示需要在什么级别保存该注解信息,用于描述注解的生命周期

     自定义注解一:

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * ClassName:MyAnnotation
     * date: 2020/4/16 10:25
     *
     * @author 王鼎禹
     */
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.CLASS)
    public @interface MyAnnotation {
        String stuName() default "";  //方法的名称就是参数的名称stuName()
                                      // 返回值类型就是参数类型(返回值类型只能是基本 类型、Class、String、enum)
                                      //default 来声明参数的默认值,经常使用空字符串,0作为默认值
        int age() default 0;
        String [] school() default {"B站大学","清华大学"};
    
    }

    自定义注解二:

     1 import java.lang.annotation.ElementType;
     2 import java.lang.annotation.Retention;
     3 import java.lang.annotation.RetentionPolicy;
     4 import java.lang.annotation.Target;
     5 
     6 /**
     7  * ClassName:MyAnnotation2
     8  * date: 2020/4/16 10:31
     9  *
    10  * @author 王鼎禹
    11  */
    12 @Target({ElementType.TYPE,ElementType.METHOD})
    13 @Retention(RetentionPolicy.RUNTIME)
    14 public @interface MyAnnotation2 {
    15     String value();  //如果只有一个成员,一般参数名为 value
    16 }
     1 //@MyAnnotation 该注解只能应用到方法上
     2 //@MyAnnotation2(value="aaaa")
     3 @MyAnnotation2("aaa")
     4 public class Test5 {
     5     @MyAnnotation(stuName = "王一一")
     6     public static void show(){
     7     }
     8     @MyAnnotation(stuName = "乔二二",age = 23,school = {"家里蹲大学","蓝翔大学"})
     9     public void method(){
    10 
    11     }
    12 }
  • 相关阅读:
    Pandas 包基础
    记录numpy 数组打印形式
    WordPress 模板层次结构
    WordPress 主题开发
    WordPress 主题开发
    WordPress 主题开发
    WordPress 主题开发
    WordPress 主题开发
    WordPress 主题开发
    WordPress 主题开发
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12711200.html
Copyright © 2011-2022 走看看