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

JDK5.0新特性Annotation之@Retention注解

 
阅读更多

直接代码说话,说明信息详见注释。。

首先是自定义的使用@Retention标注的注解----MyAnnotation.java

  1. package com.jadyer.annotation.retention;  
  2.   
  3. import java.lang.annotation.Retention;  
  4. import java.lang.annotation.RetentionPolicy;  
  5.   
  6. @Retention(RetentionPolicy.RUNTIME)  
  7. public @interface MyAnnotation {  
  8.     String hello() default "haerbin";  
  9.     String world();  
  10. }  
  11. /*********************【@Retention用来告知编译程序如何处理注解】********************************************************/  
  12. //java.lang.annotation.Retention型态可以在定义Annotation型态时,指示编译程序如何对待自定义的Annotation型态  
  13. //预设上编译程序会将Annotation信息留在.class档案中,但不被虚拟机读取,仅用于编译程序或工具程序运行时提供信息  
  14. //在使用Retention型态时,需要提供java.lang.annotation.RetentionPolicy的枚举型态  
  15. //java.lang.annotation.RetentionPolicy.CLASS----默认值。编译程序将Annotation储存于class档中  
  16. //java.lang.annotation.RetentionPolicy.SOURCE---编译程序处理完Annotation信息后就完成任务  
  17. //                                              该注释将不被记录在类文件中,而只是存在于.java文件中  
  18. //java.lang.annotation.RetentionPolicy.RUNTIME--编译程序将Annotation储存于class档中,可由JVM读入  
  19. //                                              即编译器将把注释记录在类文件中,在运行时JVM将保留注释  
  20. //                                              故可搭配反射(Reflection)机制让JVM读取Annotation信息  
  21. /*********************【@SuppressWarnings用来告知编译程序来抑制警告】***************************************************/  
  22. //其中@SuppressWarnings注解的RetentionPolicy就是SOURCE,即仅在编译时告知编译程序来抑制警告  
  23. //如果@SuppressWarnings中定义不存在的警告类型,那么程序也不会报错  
  24. //如果@SuppressWarnings中定义了重名的警告类型,那么后面的将全部被忽略掉  
  25. /*****************************************************************************************************************/  

 

然后是自定义的@MyAnnotation注解的测试类----MyTest.java

  1. package com.jadyer.annotation.retention;  
  2.   
  3. public class MyTest {  
  4.     @Deprecated  
  5.     @SuppressWarnings("unchecked")  
  6.     @MyAnnotation(hello = "beijing", world = "chongqing")  
  7.     public void output() {  
  8.         System.out.println("output something");  
  9.     }  
  10. }  

 

最后利用反射机制读取MyTest.java中的Annotation信息的类----MyReflection.java

  1. package com.jadyer.annotation.retention;  
  2.   
  3. import java.lang.annotation.Annotation;  
  4. import java.lang.reflect.Method;  
  5.   
  6. /** 
  7.  * 利用反射机制,读取MyTest.java中的Annotation信息 
  8.  * @see 控制台打印结果,如下 
  9.  * @see output something 
  10.  * @see beijing 
  11.  * @see chongqing 
  12.  * @see java.lang.Deprecated 
  13.  * @see com.jadyer.annotation.retention.MyAnnotation 
  14.  */  
  15. public class MyReflection {  
  16.     public static void main(String[] args) throws Exception {  
  17.         MyTest myTest = new MyTest();  
  18.         Class<MyTest> c = MyTest.class;  
  19.         Method method = c.getMethod("output"new Class[]{});  
  20.   
  21.         //判断方法前面是否存在特定的Annotation  
  22.         if (method.isAnnotationPresent(MyAnnotation.class)) {  
  23.             //调用MyTest中的output()方法  
  24.             method.invoke(myTest, new Object[]{});  
  25.               
  26.             //获得某一具体的Annotation  
  27.             MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation.class);  
  28.               
  29.             //对于Annotation中的元素,赋值时可以把它当作属性,取出时可以把它当作方法  
  30.             String hello = myAnnotation.hello();  
  31.             String world = myAnnotation.world();  
  32.               
  33.             System.out.println(hello);  
  34.             System.out.println(world);  
  35.         }  
  36.   
  37.         Annotation[] annotations = method.getAnnotations();  
  38.         for (Annotation annotation : annotations) {  
  39.             //不会打印出@SuppressWarnings注解,因为它的RetentionPolicy是SOURCE  
  40.             System.out.println(annotation.annotationType().getName());  
  41.         }  
  42.     }  
  43. }  

 

分享到:
评论

相关推荐

    JDK5.0 Java Annotation 介绍(ppt)

    Java Annotation 是 JDK5.0 引入的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、构建工具或运行时系统用来执行特定的任务。Annotation 提供了一种安全、灵活的方式来描述代码的属性...

    JDK5.0-Java Annotation 介绍

    Java Annotation(注解)是自JDK 5.0开始引入的一种元数据,它提供了一种安全、非侵入式的方式来向编译器、虚拟机或者其他的工具提供关于代码的信息。这种信息可以用来进行编译时检查、运行时处理、代码生成等。注解...

    Annotation(注解)详细教程,jdk新特性

    Annotation(注解)是Java编程语言的一个重要特性,自JDK 1.5引入以来,逐渐成为编写可维护和可扩展代码的关键工具。注解提供了一种方式,使得程序员可以在代码中添加元数据(metadata),这些数据不直接影响代码...

    注解与反射高效开发法.pdf

    @Retention注解则用于指定注解的存储策略,共有三个策略:SOURCE、CLASS、RUNTIME,其中SOURCE级别注解仅保留在源码中,CLASS级别注解在编译时被编译器保留,而RUNTIME级别注解则被JVM保留,能够在运行时被反射机制...

    Java 注解Annotation实例上手文档

    Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架能够理解和处理这些元数据。在Java中,注解是一种元数据,可以被...

    java Annotation 注解

    Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,自JDK 5.0开始引入。注解提供了在源代码中嵌入元数据的能力,这些元数据可以被编译器、构建工具或者运行时环境用来处理代码。它们在代码中看起来...

    Java注解学习1-Java Annotation认知(包括框架图、详细介绍、示例说明)

    Java 注解(Annotation)是自 JDK 5.0 版本引入的一种元数据机制,用于向编译器、开发工具和运行时系统提供有关代码的附加信息。它们并不直接影响程序的执行,但可以用于代码分析、编译时验证或者运行时处理。本文将...

    java注解详解,十分有用。

    Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性,它是一个新的类型,与类、接口、枚举是在同一个层次。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释...

    Java元注解.docx

    元注解是自Java 5版本引入的新特性,主要用于增强代码的元数据信息,帮助工具和运行时环境更好地理解和处理注解。 1. **什么是注解?** 注解是Java编程语言中的一个关键特性,它允许程序员在源代码中添加额外的...

    北京圣思园 Annotation pdf文档

    通过使用@Retention注解,开发者可以指定注解保留到源代码级别(RetentionPolicy.SOURCE)、类文件级别(RetentionPolicy.CLASS)或运行时级别(RetentionPolicy.RUNTIME)。这三种策略中,RUNTIME级别允许注解在...

    14、JavaSE:注解和反射.pdf

    Java注解(Annotation)是自JDK 5.0版本起引入的一种元数据,它为程序提供了附加信息,但并不直接影响程序的运行。注解的主要目的是为了帮助编译器、构建工具、IDE或其他软件工具更好地理解和处理代码。注解与普通的...

    java注解详解[文].pdf

    Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性。它是一个新的类型,与接口类似,位于同一个层次,称为 Java 的一个类型(TYPE)。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,...

    java注解详解

    注解是Java语言自JDK 5.0版本引入的一种新特性,用于在代码中添加元数据(即关于数据的数据)。它允许开发人员向Java编译器、工具和其他框架提供额外的信息,而不改变程序的逻辑。 **注解特点**: - 注解是一种新的...

    吴天雄-Java注解及动态性详解.doc

    Java注解,也称为Annotation,是自JDK 5.0版本起引入的一种元数据机制,它为程序提供了额外的信息,这些信息可以在编译时或运行时被解析和使用。元数据是描述数据的数据,注解就是一种特殊的数据类型,可以用于修饰...

    完整版 Java高级教程 Java语言程序设计 第7章 Java注解(共10页).ppt

    Java注解(Annotation)是Java语言的一个重要特性,自JDK 5.0引入以来,它已经成为编写可维护和可扩展代码的关键工具。注解是一种形式化的元数据,提供了将信息附加到源代码的能力,这些信息可以被编译器、IDE、构建...

    Java注解开发

    **注解(Annotation)** 是 Java 语言在 JDK 5.0 及之后版本引入的一种元数据机制,它为程序中的各种元素(如类、方法、变量等)提供了一种灵活的方式来附加额外的信息。注解本质上是一种特殊的接口,其主要用途包括...

    Java版水果管理系统源码-huihe_2020summer:2020假期spring学习,vue留给你们了,有兴趣自己可以看官方文档,中文很

    JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。 内置的注解 作用在代码的注解是 @Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,...

    Java枚举类的使用与注解

    Java枚举类是Java语言中一个非常重要的特性,它用于创建固定的、有限数量的类实例。枚举类在很多场景下被用作定义一组相关的常量,提供了比使用静态final变量更安全、更灵活的方式。 一、枚举类的理解: 1. 枚举类...

Global site tag (gtag.js) - Google Analytics