一种标记,用来给计算机看的。
用来标注“普通注解”的注解。
指定可以标注的目标或者可以标注在哪个上面。
ElementType.TYPE 类
ElementType.FIELD 属性
ElementType.METHOD 方法
ElementType.CONSTRUCTOR 构造器
…
保存的地方。
RetentionPolicy.SOURCE 保存在源文件RetentionPolicy.CLASS 保存在.class文件RetentionPolicy.RUNTIME 保存在.class文件并可以被反射读取只能放在方法上,判断该方法是否重写父类的方法。
可以放在类、方法、字段、构造器等上面,表示(这个已过时,不建议使用),但如果使用也可以正常使用。
在相应的代码上加注解。
//注解中的参数一般是(属性名=值,属性名=值) @MyAnnotation(value = "zhangsan ")//只有value @MyAnnotation("zhangsan ")//只有value,可以不写value @MyAnnotation()//只有id,不写值默认为1 @MyAnnotation(nums = {12.2,576.2})//只有数组nums @MyAnnotation(nums = 12.2)//只有数组nums且数组的值只有一个,可以省略花括号 void run(){ } 当属性名为value,并且只有一个属性名时,value可以不写(省略)。如果属性有默认值时,参数可以不写。如果属性是数组且数组的值只有一个时,可以省略花括号。获取注解的Retention必须是RUNTIME的。
public class MyAnnotationTest1 { @MyAnnotation(value = "zhangsan",i=2) void run(){} } 要获取注解上的值,先要获取注解要获取注解,先要获取方法,因为该注解是在方法上的。要获取方法,先获取类。 //获取类 Class aClass = Class.forName("base.注解.MyAnnotationTest1"); //获取类的run方法 Method method=aClass.getDeclaredMethod("run"); //如果run方法上有MyAnnotation类型的注解 if(method.isAnnotationPresent(MyAnnotation.class)){ //获取注解 MyAnnotation myAnnotation=method.getAnnotation(MyAnnotation.class); //获取注解的值 String value = myAnnotation.value(); System.out.println(myAnnotation.i());//2 System.out.println(value);//zhangsan