[JavaSE]->{注解和反射04}-->自定义注解

自定义注解

写在前面:本篇博客只用于学习笔记


  • 使用 @interface自定义注解时 , 自动继承了java.lang.annotation.Annotation接口
  • 分析 :
    • @ interface用来声明一个注解 , 格式 : public @ interface 注解名 { 定义内容 }
    • 其中的每一个方法实际上是声明了一个配置参数.
    • 方法的名称就是参数的名称.
    • 返回值类型就是参数的类型 ( 返回值只能是基本类型,Class , String , enum ).
    • 可以通过default来声明参数的默认值。
    • 如果只有一个参数成员 , 一般参数名为value。
    • 注解元素必须要有值 , 我们定义注解元素时 , 经常使用空字符串,0作为默认值 .
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @ClassName: Test3
 * @Description: //自定义注解
 * @Author: sniper-zx
 * @Version: 1.0
 **/
//自定义注解
public class Test3 {
    //显示定义值 / 不显示值就是默认值
    @DiyAnnotation2(age = 19,name = "Tokm", id = 1,schools = {"水星"})
    public void test1(){

    }
    @DiyAnnotation3(value = "Hi,nice to meet you!")
    public void test2(){

    }

}

//注解作用范围,具有多个值是使用{}
@Target(value = {ElementType.METHOD})
//注解作用周期
@Retention(value = RetentionPolicy.RUNTIME)
@interface DiyAnnotation2{
//    参数类型 参数名 (默认值)参数值
    String name() default "";
    int age() default 19;
    int id() default  -1;//String indexOf("abc") -1 , 不存在,找不到
    String[] schools() default {"地球","火星","木星"};
}

@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@interface DiyAnnotation3{
//    当注解只有一个参数时,使用value作为参数名
    String value();
}

写在后面:
参考资料:【狂神说Java】注解和反射

你可能感兴趣的:(【1】JavaSE)