如何使用java自定义注解?demo
2016-02-25 10:59
204 查看
1、Description.java
2、Name.java
3、MyTest.java
4、运行提取MyTest的类TestAnnotation.java
package kzfy.bk.com; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Description { String value(); }
2、Name.java
package kzfy.bk.com; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //注意这里的@Target与@Description里的不同,参数成员也不同 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Name { String originate(); String community(); }
3、MyTest.java
package kzfy.bk.com; @Description("我的第一个使用自定义注解的类!") public class MyTest{ @Name(originate="空中飞鱼",community="java") public String getName(){ return "java,我的人生路!"; } @Name(originate="博客园",community="写博客") public String getName2() { return "博客,新的征程!"; } }
4、运行提取MyTest的类TestAnnotation.java
package kzfy.bk.com; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; public class TestAnnotation { /** * Annotation的API的用法请参见javaDoc文档 */ public static void main(String[] args) throws Exception { String CLASS_NAME ="kzfy.bk.com.MyTest"; Class test = Class.forName(CLASS_NAME); 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中去 Method[] method = test.getMethods(); 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("orginate:"+name.originate()); System.out.println("community:"+name.community()); } } }
相关文章推荐
- Java基础:Day09笔记内容 (继承)
- Java成语接龙游戏小项目实战
- 一个Java对象到底占多大内存
- spring系列之4--浅谈前后端分离
- 如何使用 Java8 实现观察者模式?(下)
- java中for-each用法小结
- 如何使用 Java8 实现观察者模式?(下)
- java定时任务
- 配置Eclipse支持java和xml文件的代码补全功能
- Java基础:Day08笔记内容 (变量、匿名)
- spring-security2配置精讲(转载)
- MyEclipse使用Run As->mvn install出现错误
- javax.mail.MessagingException: 501 Syntax: HELO hostname
- Java基础:Day07笔记内容 (面向对象)
- Java基础:Day06笔记内容 (选择排序)
- Java分割字符串
- Java基础:Day05笔记内容 (方法、数组)
- 在eclipse中改变编码格式。
- Java基础:Day04笔记内容 (选择结构)
- java代码获取客户端的真实ip