java元注解@Target、@Retention-自定义注解

  1. @Target 表示我们的注解可以用在哪些地方

  2. @Retention 表示我们的注解在什么地方还有效。
    runtime > class > sources

    runtime 在所有地方都有效
    class 只在类和源码中有效
    sources 只在sources有效
    
    好,下面我们通过一个实例来了解:
    
//自定义注解
public class Test03 {
    // 有了default "" 可以不用有参数、值
    @MyAnnotation2(age = 12)
    public void test(){}

}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    //注解的参数:参数类型 + 参数名();
    String name() default "";
    int age();
    String[] schools() default {"北京大学,清华大学"};
}
	**@Target**中的**ElementType.TYPE**表示可以使用在类中
	**@Target**中的**ElementType.METHOD**表示可以使用在方法中
	如若没有定义以上,那文中的**MyAnnotation2**则不可以在类或方法中使用,不然会报错。
	
	**MyAnnotation2**{
	要有注解的参数”格式为“:
	参数类型 + 参数名();
	
	**没有default则需要赋值,有default则为空**
	String name() default "";  	//default 默认为空 ” “
	int age();								//需要在类中给值
	String[] schools() default {"北京大学,清华大学"};   		//数组类型,默认值为:"北京大学,清华大学"
	}

实例中 int age();没有写default ,所以我们要在类中给他值:
@MyAnnotation2(age = 12)
public void test(){}


版权声明:本文为qq_43311688原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。