JAVA 注解示例详解(二)
Annotation在java的世界正铺天盖地展开,有空写这一篇简单的annotations的文章,算是关于Annotation入门的文章吧,希望能各位们能抛砖,共同学习......
?? 不讲废话了,实践才是硬道理.
第一部分:了解一下java1.5起默认的三个annotation类型:
?? 一个是@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
?? 一个是@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上.
?? 一个是@SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭.
?? 如果不清楚上面三个类型的具体用法,各位可以baidu或google一下的,很简单的。?
?第二部分:讲一下annotation的概念先,再来讲一下怎样设计自己的annotation.
?? 首先在jdk自带的java.lang.annotation包里,打开如下几个源文件:?
?1、源文件Target.java
package lighter.iteye.com; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; public class TestAnnotation {/** * author lighter * 说明:具体关天Annotation的API的用法请参见javaDoc文档 */ public static void main(String[] args) throws Exception { String CLASS_NAME = "lighter.iteye.com.JavaEyer"; Class test = Class.forName(CLASS_NAME); Method[] method = test.getMethods(); boolean flag = test.isAnnotationPresent(Description.class); if(flag) { Description des = (Description)test.getAnnotation(Description.class); System.out.println("描述:"+des.value()); System.out.println("-----------------"); } //把JavaEyer这一类有利用到@Name的全部方法保存到Set中去 Set<Method> set = new HashSet<Method>(); for(int i=0;i<method.length;i++) { boolean otherFlag = method[i].isAnnotationPresent(Name.class); if(otherFlag) set.add(method[i]); } for(Method m: set) { Name name = m.getAnnotation(Name.class); System.out.println(name.originate()); System.out.println("创建的社区:"+name.community()); } }}
?5、运行结果:
???? 描述:javaeye,做最棒的软件开发交流社区
???? -----------------
??? 创始人:robbin
??? 创建的社区:javaEye
??? 创始人:江南白衣?
??? 创建的社区:springside
本文摘自:http://www.iteye.com/topic/36659