`
janeky
  • 浏览: 363929 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

注解 java.lang.annotation.* 详解

阅读更多

注解以前用的少,最近项目中发现偶尔一用,可以使得代码更加简洁

 

自定义一个注解

 

 

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface TestAnnotation {
	public int value() default 1;
}

对这些一一解释一下:

 

1.Documented.java 

表示这一类型的注释将通过 javadoc 和类似的默认工具进行文档化

 

2.Target .java

注解适用的目标类型,如果不注明,表示适用于各种类型

包括ElementType.java中定义的以下类型

 

  • TYPE - 类,接口(包括注解类型),枚举定义
  • FIELD - 字段定义(包括枚举常量)
  • METHOD - 方法定义,
  • PARAMETER - 参数定义,
  • CONSTRUCTOR - 构造函数,
  • LOCAL_VARIABLE - 本地变量,
  • ANNOTATION_TYPE - 注解类型
  • PACKAGE - 包定义

 

3.Retention.java

注解持续的范围,包括RetentionPolicy.java定义的

 

  • SOURCE - 会被编译器忽略
  • CLASS - 注解会被编译器记录在类文件中,在运行时不需要保持。这是缺省的保存方式
  • RUNTIME - 注解会被编译器记录在类文件中,并且在运行时保持,因此可以通过反射获得

 

4.Inherited.java

注释类型被子类自动继承。也就是当我查询一个类是否有某种Annotation时,如果该类不存在,自动查找该父类是否有该Annotation

 

5.在注解里面就可以定义各种属性了,每种属性还可以定义缺省值default

 

6.使用注解更简单了

@TestAnnotation(value=2)

public static void method(){

}

 

7.之后我们就可以通过反射去访问该注解了

TestAnnotation anno = method.getAnnotation(TestAnnotation.class);

anno.id();

 

8.注解的用途

注解一般适用于各种配置和标记,例如spring等框架通过注解类来实现bean的管理

 

总结:

 

这部分的源码非常短,所以这里就不列举出来,大家可以去了解一下

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics