用@interface定义一个annotation:

package annotationTest;import java.lang.annotation.*;@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodInfo {String author() default "Jerry";String version() default "1.0";String date();String comment();
}

新建一个类,给其方法添加上刚才创建的注解:

package annotationTest;// Jerry change for demopublic class AnnotationExample {@Override@MethodInfo(author = "xxx",version = "1.0",date = "2015/03/26",comment = "override toString()")public String toString() {return "AnnotationExample{}";}@Deprecated@MethodInfo(comment = "deprecated method", date = "2015/03/26")public static void oldMethod() {System.out.println("old method, don't use it.");}@MethodInfo(author = "Pankaj", comment = "Main method", date = "Nov 17 2012", version = "1.0")public static void genericsTest() {oldMethod();}
}

打印的输出:

@annotationTest.MethodInfo(version="1.0", author="xxx", date="2015/03/26", comment="override toString()") in method:public java.lang.String annotationTest.AnnotationExample.toString()Method with revision no 1.0 = public java.lang.String annotationTest.AnnotationExample.toString()
@annotationTest.MethodInfo(version="1.0", author="Pankaj", comment="Main method", date="Nov 17 2012") in method:public static void annotationTest.AnnotationExample.genericsTest()Method with revision no 1.0 = public static void annotationTest.AnnotationExample.genericsTest()
@java.lang.Deprecated(forRemoval=false, since="") in method:public static void annotationTest.AnnotationExample.oldMethod()
@annotationTest.MethodInfo(version="1.0", author="Jerry", comment="deprecated method", date="2015/03/26") in method:public static void annotationTest.AnnotationExample.oldMethod()Method with revision no 1.0 = public static void annotationTest.AnnotationExample.oldMethod()

同理,新建一个description注解,用来修饰People类:

package annotationTest;import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.*;@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {String desc();String author();int age() default 18;
}
package annotationTest;import java.lang.annotation.Annotation;
import java.lang.reflect.Method;@Description(author = "Jerry", desc = "Class annotation", age = 35)
public class People {@Description(author = "Jerry 2", desc = "method annotation", age = 35)public void hello(){}@SuppressWarnings({ "rawtypes", "unchecked" })public static void main(String[] arg){try {// 使用类加载器加载类Class c = Class.forName("annotationTest.People");// 找到类上面的注解boolean isExist = c.isAnnotationPresent(Description.class);// 上面的这个方法是用这个类来判断这个类是否存在Description这样的一个注解if (isExist) {// 拿到注解实例,解析类上面的注解Description d = (Description) c.getAnnotation(Description.class);System.out.println(d.desc());}//获取所有的方法Method[] ms = c.getMethods();// 遍历所有的方法for (Method m : ms) {boolean isExist1 = m.isAnnotationPresent(Description.class);if (isExist1) {Description d1=m.getAnnotation(Description.class);System.out.println(d1.desc());}}//另一种解析方法for (Method m : ms) {//拿到方法上的所有的注解Annotation[] as=m.getAnnotations();for (Annotation a : as) {//用二元操作符判断a是否是Description的实例if (a instanceof Description) {Description d=(Description) a;System.out.println(d.desc());}}}} catch (ClassNotFoundException e) {e.printStackTrace();}}}

输出:

Class annotation
method annotation
method annotation

自定义Java annotation及解析和使用相关推荐

  1. 自定义 Java Annotation ,读取注解值

    1. 首先是自定义注解: Java代码   package cn.veji.hibernate.po; import java.lang.annotation.ElementType; import  ...

  2. Java Annotation

    为什么80%的码农都做不了架构师?>>>    第1部分 Annotation架构 先看看Annotation的架构图: 从中,我们可以看出: (01) 1个Annotation 和 ...

  3. 可以自定义模板的ide_将IDE检查应用于自定义Java批注

    可以自定义模板的ide J2SE 5中注释的引入改变了我们编写和处理Java的方式. 除了Java SE的预定义注释外 ,框架,IDE和工具包还引入了自己的自定义注释 . Checker框架提供了一些 ...

  4. 将IDE检查应用于自定义Java批注

    J2SE 5中注释的引入改变了我们编写和处理Java的方式. 除了Java SE的预定义注释外 ,框架,IDE和工具包还引入了自己的自定义注释 . Checker框架提供了一些示例,说明如何使用自定义 ...

  5. Java Annotation认知(包括框架图、详细介绍、示例说明)

    摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...

  6. 开发 Spring 自定义视图和视图解析器

    Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring ...

  7. Java Annotation手册

    版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者:cleverpig(作者的Blog: http://blog.matrix.org.cn/page/cle ...

  8. 我的Android进阶之旅------Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能...

    前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...

  9. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

最新文章

  1. 基于U-Net图像分割的划痕缺陷分割(课程设计)
  2. 使用.NET自带的类实现DataGrid报表的打印。
  3. redis的导入导出需要特别注意的地方
  4. ActiveX(五)更好的“ActiveX”?
  5. 「从源码中学习」面试官都不知道的Vue题目答案
  6. dubbo笔记+源码刨析
  7. 骁龙660_高通骁龙660可以带动6g运行内存吗?
  8. (全部)2008重磅出击——微软Windows Server 2008实战攻略系列
  9. java学习(17):巩固练习
  10. 动手学无人驾驶(1):交通标志识别
  11. JS左侧竖向滑动菜单
  12. 递归计算二叉树的叶子节点个数
  13. 7000条短信接口!福利赠送!
  14. html5建站模板怎么用,怎么用模板建网站
  15. Linux实验13_进程管理及任务计划.docx
  16. aiohttp+aiofiles异步爬虫光速下载图片
  17. android和iOS平台的崩溃捕获和收集
  18. linux系统深度评测,真国产,深度linux系统评测第二集
  19. 关于 public.resource.org
  20. 通过外部Python调用FreeCAD

热门文章

  1. [Everyday Mathematics]20150113
  2. 采用静态配置文件方式实现AOP
  3. 第一章:Java语言概述
  4. spring框架学习1:搭建测试
  5. Ajax学习系列——向服务器发送请求
  6. 机器学习基础一(TP,TN,FP,FN等)
  7. 设计模式六大原则(5)——迪米特原则
  8. 在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL)...
  9. 使用Silverlight 2 和 VS 2008创建“Hello World”程序
  10. eclipse搭建Android开发环境