注解
注解
 注解是jdk1.5引入的技术
1.范围
TYPE, 可用于class,interface,Annotation,enum上面
FIELD, 属性上面,即成员变量
METHOD, 方法上面
PARAMETER, 方法的参数前面,比如test(@Nullable String name) 允许这个参数为空
ANNOTATION_TYPE, 注解类型上面
2.元注解
 元注解是在我们自定义注解的时候用的,java中就只有四个
- 
@Target,用于描述注解的使用范围 
- 
@Retention,保留策略,决定是保留到源代码中 (SOURCE,在编译完,成为class文件的时候,注解被遗弃)/ Class文件中(CLASS,在class文件中有,但当jvm加载这个class文件之后,就没有了)/ 加载到内存中(RUNTIME,一直存在) 拿SOURCE举个栗子,它对应着编译阶段,@Override用的就是它,所以在编译的时候就会检查此方法是不是重写的 注意,若要用到反射技术,则必须使用RUNTIME,因为它在运行阶段有效 
- 
@Documented, 使用了该元注解的注解,该注解的信息将会被生成到API帮助文档中 比如我定义了一个注解 
	@Target(ElementType.METHOD)
	@Documented
	public @interface MyAnnotation{
          String[] value();
          int a();
	}
然后使用这个注解,该传参的传参
	public class AnnotationTest {
        @MyAnnotation(value ="tom",a=10)
          public void sayHello(){
          System.out.println("Hello World!");
      	  }
	}
然后利用idea或eclipse生成该java文件的javadoc(就是API帮助文档),如下,注解的信息就出现在了API中

- Inherited, 会被继承, 假如某父类上使用了该注解,那么它的子类也默认使用了该注解
    这一路,灯火通明
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号