Annotation学习入门的几篇文章
2011-12-18 17:17
190 查看
1、http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html,这个是官方网站的入门示例,讲解决 了annotation的几种类型,可以用于:
1)、给编译器提供相应的信息,如错误检测及警告;
2)、为编译及打包时的提供处理行为,如生成代码、生成XML文件等,常用的就是@Document用于生成JDK文档;
3)、运行时处理。
这篇文章提供了警告及编译时生成文档的示例,并且后面附有两个练习题,可以帮助巩固对annotation的理解;不过不足之处就是没有对运行时的annotaion提供示例,不过毕竟是官方文档,值得一看。
2、http://www.kodejava.org/examples/501.html,这篇文档提供了一个创建一个简单的annotation的示例,提到了annotation的语法结构,并对三种保留策略(RetentionPolicy)进行说明:
1)、RetentionPolicy.CLASS,如果编译的annotation没有写Retention声明保留策略,那么默认的保留策略是Retention.CLASS,表示在编译的时候声明会保留到class文件中,但是在运行的时候是无效的;
2)、RetentionPolicy.SOURCE,表示这个保留策略只是用于语法检查的,在编译成class文件时就被去掉了,不会保留在class文件中,如常见的@Override和@SuppressWarnings就是属于这种保留类型,如java.lang.Override的源码:
简单易懂,也值得一看。
3、http://www.kodejava.org/examples/503.html,看了第二篇文章后,可以继续看这篇,这篇是在上面一篇简单annotation的基础之上做的一个示例,内容不多,基本上就是一个程序,一看就懂。不过我觉得其中有些地方需要优化一下,如原文中的:
如果是新手入门,以上的几篇文章最好是按照我例的顺序看,花两个小时,保证你能够熟悉annotation以及知道如何处理annotation。
本文出自:冯立彬的博客
1)、给编译器提供相应的信息,如错误检测及警告;
2)、为编译及打包时的提供处理行为,如生成代码、生成XML文件等,常用的就是@Document用于生成JDK文档;
3)、运行时处理。
这篇文章提供了警告及编译时生成文档的示例,并且后面附有两个练习题,可以帮助巩固对annotation的理解;不过不足之处就是没有对运行时的annotaion提供示例,不过毕竟是官方文档,值得一看。
2、http://www.kodejava.org/examples/501.html,这篇文档提供了一个创建一个简单的annotation的示例,提到了annotation的语法结构,并对三种保留策略(RetentionPolicy)进行说明:
1)、RetentionPolicy.CLASS,如果编译的annotation没有写Retention声明保留策略,那么默认的保留策略是Retention.CLASS,表示在编译的时候声明会保留到class文件中,但是在运行的时候是无效的;
2)、RetentionPolicy.SOURCE,表示这个保留策略只是用于语法检查的,在编译成class文件时就被去掉了,不会保留在class文件中,如常见的@Override和@SuppressWarnings就是属于这种保留类型,如java.lang.Override的源码:
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { }3)、RetentionPolicy.RUNTIME,运行时起效果的,如常见的@Deprecated就是。
简单易懂,也值得一看。
3、http://www.kodejava.org/examples/503.html,看了第二篇文章后,可以继续看这篇,这篇是在上面一篇简单annotation的基础之上做的一个示例,内容不多,基本上就是一个程序,一看就懂。不过我觉得其中有些地方需要优化一下,如原文中的:
for (Annotation anno : annotations) { System.out.println("Annotation Type: " + anno.annotationType()); } HelloAnno anno = (HelloAnno) clazz.getAnnotation(HelloAnno.class); System.out.println("Anno Value : " + anno.value()); System.out.println("Anno GreetTo: " + anno.greetTo());上面的例子只是适合当前确定已经有了annotation的示例才会成功,如果这个类把annotation去掉或者写了其它的annotaion,运行就会报错了,写成下面这种会更好:
for (Annotation anno : annotations) { System.out.println("Annotation Type: " + anno.annotationType()); if (anno.annotationType().isAssignableFrom(HelloAnno.class)) { HelloAnno helloAnno = (HelloAnno) anno; System.out.println("Anno Value : " + helloAnno.value()); System.out.println("Anno GreetTo: " + helloAnno.greetTo()); } }同理,其中对方法annotation的处理:
Method m = getClass().getMethod("sayHello"); HelloAnno anno = m.getAnnotation(HelloAnno.class); System.out.println(anno.value() + " " + anno.greetTo());也应该修改成下面的,以免报错:
Method m = clazz.getMethod("sayHi"); if (m.isAnnotationPresent(HelloAnno.class)) { anno = m.getAnnotation(HelloAnno.class); System.out.println("Anno Value : " + helloAnno.value()); System.out.println("Anno GreetTo: " + helloAnno.greetTo()); }4、http://www.blogjava.net/hain/articles/84512.html,这是一篇国人写的文章,其中最值得看的就是对JDK自带的几个常用annotation的源码文析,熟悉了@Target、@Document、@Retention几个annotation,那自己编写的annotation就不会湖里湖涂了。
如果是新手入门,以上的几篇文章最好是按照我例的顺序看,花两个小时,保证你能够熟悉annotation以及知道如何处理annotation。
本文出自:冯立彬的博客
相关文章推荐
- 技术文章|全面连接困何处_卷积网络见解深(深度学习入门全系列)
- 几篇MyBatis学习不错的文章
- 关于学习Mongodb的几篇文章
- Objective‐C很好的入门学习文章
- div css 学习入门文章一
- 关于学习Mongodb的几篇文章
- 几篇 Kotlin 编程语言入门的文章
- Java学习从入门到精通 ------好文章!
- 可能与深度学习跨媒体相关的几篇文章
- selenium webdriver 学习总结-JUnit4 入门_补充Annotation(三)
- LSTM入门学习——结合《LSTM模型》文章看
- 有关远程通信的几篇学习文章
- 几篇不错的 Web Service 入门文章
- 流形学习几篇文章
- 几篇关于Hadoop+Hive数据仓库的入门文章
- [新手入门]快速学习 ADO.NET Entity Framework系列文章 #1~#2
- selenium webdriver 学习总结-JUnit4 入门_补充Annotation(三)
- 有关远程通信的几篇学习文章
- UML学习入门就这一篇文章