• 如何使用java自定义注解?demo


    1、Description.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());   
                }   
          }   
    } 
  • 相关阅读:
    2015-03-20——移动端UC浏览器、QQ浏览器自动全屏
    2015-03-18——mongodb的简单配置
    2015-03-12——简析DOM2级样式
    2015-03-12——简析DOM2级事件
    2015-03-11——简析DOM规范
    2015-03-10——简析javascript对象
    分页控件的编写
    Jquery添加掩盖层的插件
    正则表达式/g/i/d
    MVC请求生命周期
  • 原文地址:https://www.cnblogs.com/kzfy/p/5216210.html
Copyright © 2020-2023  润新知