首页 > 其他分享 >注解-自定义注解-属性定义以及元注解

注解-自定义注解-属性定义以及元注解

时间:2022-08-28 20:25:16浏览次数:48  
标签:自定义 public 注解 描述 属性 class Retention

自定义注解-属性定义

属性:接口中的抽象方法

  要求:

    1、属性的返回值类型

      基本数据类型

      String

      枚举

      注解

      以上类型的数组‘

枚举:

public enum Person {
    P1,P2;
}

注解:

public @interface MyAnno2 {

}
public @interface MyAnno {
    int show1();

    String show2();

    Person show3();

    MyAnno2 show4();

    String[] show5();
}

2、定义了属性,在使用是需要给属性赋值

1.如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值

2.如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可

3.数组赋值时,值使用{}包裹。如果数组只有一个值,则 {}省略

public @interface MyAnno {//自定义注解
    String name() default "张三";//default:使用此注解属性自动设为默认
int value();
Person per();//枚举
MyAnno2 my();
String[] str(); }

赋上值

@MyAnno(show1 = 1,show3 = Person.p1,show4 = @MyAnno2,show5 = {"abc","desf"})
public class Worker {
}

 

自定义元注解

 元注解:用于描述注解的注解

1.@Target :描述注解能够作用的位置

ElementType取值:

  TYPE:可以作用于类上

  METHOD:可以作用于方法上

  FIELD:可以作用于成员变量上

​ 2.@Retention:描述注解被保留的阶段

  Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到

  Retention(RetentionPolicy.CLASS):当前被描述的注解,会保留到class字节码文件中,但是不会被JVM读取到

  Retention(RetentionPolicy.SOURSE):当前被描述的注解,保留到源码中,不会保留到class字节码文件中

3.@Documented:描述注解是否被抽取到api文档中

4.@Inherited:描述注解是否被子类继承

/**
 * 元注解:用于描述注解的注解
 * 1.@Target :描述注解能够作用的位置
 * ElementType取值:
 *   ElementType.TYPE:可以作用于类上
 *   ElementType.METHOD:可以作用于方法上
 *   ElementType.FIELD:可以作用于成员变量上
 * 2.@Retention:描述注解被保留的阶段
 *   Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
 *   Retention(RetentionPolicy.CLASS):当前被描述的注解,会保留到class字节码文件中,但是不会被JVM读取到
 *   Retention(RetentionPolicy.SOURSE):当前被描述的注解,保留到源码中,不会保留到class字节码文件中
 * 3.@Documented:描述注解是否被抽取到api文档中
 * 4.@Inherited:描述注解是否被子类继承
 */
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})//表示该MyAnno3注解只能作用于类上
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MyAnno3 {

}
@MyAnno(value = 12,per = Person.P1,my = @MyAnno2,str = {"abc"})
@MyAnno3
public class Worker {

    @MyAnno3
    private String name = "abc";

    @MyAnno3
    public void show(){

    }
}
//Worker类已经被MyAnno3注解了,那么子类Teacher类自动继承该注解
public class Teacher extends Worker{
}

 

标签:自定义,public,注解,描述,属性,class,Retention
From: https://www.cnblogs.com/qihaokuan/p/16633446.html

相关文章

  • 自定义类型和类型别名
    1.自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。type后面跟的是类型,写方法的时候......
  • react组件三大核心属性之一refs
    -ref让react更容易获取dom,和id比较像。只要在dom上定义ref属性,就可以在组件实例的this.refs中获取到对应的dom元素。字符串形式的refs<!DOCTYPEhtml><htmllang="en"......
  • Spring源码-自定义标签
    一、新建实体类publicclassUserimplementsSerializable{privateStringid;privateStringname;privateIntegerage;publicStringgetId(){ return......
  • CSS display 属性
    CSSdisplay属性|菜鸟教程 https://www.runoob.com/cssref/pr-class-display.htmlCSS display 属性实例设置段落生成一个行内框:p.inline{display:inline;......
  • Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
    1、生命周期**Spring容器的bean**的生命周期;1.1默认生命周期1.1.1生命周期调用构造方法,创建实例对象;set方法,给实例对象赋值;init初始化方法初始化对象;(手......
  • HTML onclick 事件属性
    HTMLonclick事件属性 https://www.w3school.com.cn/tags/event_onclick.asp实例当点击按钮时执行一段JavaScript:<buttononclick="copyText()">CopyText</button>......
  • 通过自定义指令对button进行权限的校验
    通过自定义指令对button进行权限的校验场景:左侧菜单栏通过调接口获取,每一个菜单下的还有该菜单下的button的权限操作,在mentType为2时,该children就是button权限列表1.先获......
  • vue自定义实现虚拟化列表
     1使用<ViualList:size="40":remain="8":dataList="dataList"></ViualList>size:每个列表的高度Heightremain:当前屏幕展示数据个数dataList:当前数据2自定义......
  • Spring @Repository 注解
    Spring的项目严重依赖注解。@Repository 注解在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象),并支......
  • Spring 最常用的几个注解
    大家都知道Spring严重依赖注解。实际开发的时候,我们用得最多的可能就是下面几个注解了。注解用途@Component最最普通的注解,表示这个类可以被注入到Spring容......