为什么使用注解:

  1、通过注解,可保存源数据在Java源代码中;并且注解不同于注释,注解享有编译期的类型检查保护。

  2、可在描述符性质的类或接口中抽取重复性的工作,通过注解来简化与自动化这些工作。

注解本身:

  1、三个点:

   1) 注解的@Target和@Retention

   2) 注解的属性

   3) 注解处理器

四个元注解:

@Target 表示注解可以用于什么地方。(ElementType.FIELD 字段,包括enum实例

/LOCAL_VARIABLE

/CONSTRUCTOR

/METHOD

/TYPE

/PACKAGE

/PARAMETER

@Retention 表示需要在什么级别保存该注解信息。(RetentionPolicy.RUNTIME VM在运行期也保留注解

/SOURCE 注解将被编译器丢弃

/CLASS 注解在class文件中可用,但会被VM丢弃

@Documented 将此注解包含在Javadoc中

@Inherited 允许子类继承父类上的注解

注解处理器:

  如果没有用来读取注解的工具,那注解也不会比注释更有用。   ——《Thinking in java》

  原理:

    通过反射得到某一个类上的注解、或者是某一个方法、某一个字段上的注解,然后取到注解的属性值,去完成相应需要的业务工作。

自定义一个简单注解,通过反射来处理。

//定义一个注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Display { String value() default "no values"; }
public class Hello {
   //将自定义注解贴在一个方法上
@Display("hello")
public void sayHello(){ }
}
// 注解处理器
public class DisplayTracker {
   //通过反射得到该方法上的Display注解。
public static void trackDisplays(Class<?> cl){
for(Method m :cl.getDeclaredMethods()){
Display display = m.getAnnotation(Display.class);
if(display!=null){
System.out.println(display.value());
}
}
}

public static void main(String[] args) {
trackDisplays(Hello.class);
}
}

  输出:

  

最新文章

  1. 阿里云ECS(Centos)开启X11的步骤
  2. Excel与Word套打功能使用技巧及EXCEL数据处理成绩
  3. FEC难:
  4. 个人博客作业_week2
  5. Windows XP与Windows 7系统常见漏洞
  6. Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库
  7. IIS下图片防盗连设置详解
  8. 【Lucene4.8教程之三】搜索
  9. SharePoint 2013 讨论板列表&quot;Connect to Outlook&quot; 不可用解决方案
  10. 织梦DEDE网站后台如何上传附件
  11. 【AHOI2005】病毒检测
  12. WEB框架-Django框架学习(二)- 模型层
  13. python vs C++ 类
  14. mysql ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constrain fails
  15. Linux下快速配置Java开发环境
  16. Python-正则复习-56
  17. 2955 ACM 杭电 抢银行 01背包 乘法
  18. linux进程状态D
  19. Linux升级内核教程(CentOS7)
  20. HDU3572构造图的模型

热门文章

  1. svg动画之日出
  2. 转 VS Code 快捷键大全,没有更全
  3. 远景WEBGIS平台实现客户端SHP文件加载
  4. 基于SVM.NET的验证码识别算法实现
  5. NAT原理简介、各种 ADSL Modem 及路由器的端口映射方法
  6. 使用iCarousel的旋转木马效果请求图片
  7. dADas
  8. Java学习---TCP Socket的学习
  9. centos6.3_gcc安装软件及流程
  10. CentOS使用PXE网络启动自动安装操作系统