注解定义、基本语法和属性


 

一、概念

  注解(Annotation)是给程序(例如javac,框架等)提供某些的信息,而注释(Comment)是给程序员提供信息。

二、定义基本语法

  • 定义
public @interface Anno01 {
    public static final double PI=3.14;
    //语法是方法,但是使用上叫属性----注解的属性
    public String name();
    
}
  • 使用
public @interface Anno01 {
    public static final double PI=3.14;
    //语法是方法,但是使用上叫属性----注解的属性
    public String name();
    
}

三、属性

  •  属性的返回值类型
@Retention(RetentionPolicy.RUNTIME)
public @interface Anno01 {
    public void test();    //属性的返回值不能是任意类型,void会报错
}
  • 属性可以有默认值
  1. 定义
ublic @interface Anno03 {
  public String attr1();//木有默认值
  public String attr2() default "dasb";//有默认值
  public String[] attr3();//默认默认值
  public String[] attr4() default {"sb1","sb2"};//
}

  2. 使用

@Anno03(attr1= {"jhjh"},attr3= "gssf")      //没有默认值必须要为其赋值,有默认值可以重新为其赋值
public class test01 {
    public static void main(String[] args) {     
    }
}
  • 一维数组属性

    1. 定义

public @interface Anno04 {
    public String[] attr();
}

    2. 赋值

@Anno04(attr="sb1")      //如果值得数组就有一个元素,可以省略大括号,加上也可以
  public class Test05 {
}

@Anno04(attr={"sb1","sb2"})    //多个值必须用大括号括起来,数组若没有值用空大括号。

  public class Test07 {

}

 
  • 特殊属性名 value

    1. 定义

扫描二维码关注公众号,回复: 7325673 查看本文章
public @interface Anno05 {
    public String value();
    public String attr() default "";
}

    2. 赋值

@Anno05("zhangsan")    //如果给value属性赋值可以省略value=,如果给多个属性赋值则不能省略
public class Test11 {
}

猜你喜欢

转载自www.cnblogs.com/yuanshuai1026/p/11563383.html