demo使用java自定义注解

本文介绍了一种在Java中创建并使用自定义注解的方法。通过定义不同的注解类型及其实现,展示了如何将注解应用于类和方法上,并通过反射获取注解信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();   
  }
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();   
  }在这里插入代码片
package kzfy.bk.com;   
    
  @Description("我的第一个使用自定义注解的类!")   
  public class MyTest{   
      @Name(originate="空中飞鱼",community="java")   
      public String getName(){   
          return "java,我的人生路!";
      }   
         
      @Name(originate="博客园",community="写博客")   
      public String getName2() {   
          return "博客,新的征程!";   
      }   
  }

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());   
            }   
      }   
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天崩地裂金刚不坏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值