自定义Annotation

 
自定义Annotation
早就知道jdk5加了新特性Annotation,有一部分是介绍jdk5新特性的,一个是注解一个泛型
今儿复习一下注解
    //用@Deprecated声明该方法不建议使用
    @Deprecated public void doSomething1(){
        Map map = new HashMap();
        map.put("some", "thing");
        System.out.println(map);
    }
   
    //用@SuppressWarnings声明不再进行类型检查
    @SuppressWarnings(value={"unchecked"})
    public void doSomething2(){
        Map map = new HashMap();
        map.put("some", "thing");
    }


写一个自定义注解先
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//要在运行时使用这个注解,必须声明成RUNTIME
Annotation分为三种级别:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy. RUNTIME)
public @interface SomeAnnotation{
    String value();
    String name();
}

下面来使用这个自定义注解:
import java.lang.reflect.Method;
public class AnnotationTest {
   
    @SomeAnnotation(value= "value1",name= "name1")
    public void doSomething3(){
       
    }
   
    public static void main(String[] args){
   
        Class<AnnotationTest> c = AnnotationTest. class;
        try {
            //利用反射得到方法doSomething3
            Method method = c. getMethod( "doSomething3");
            //查找doSomething3方法是否有SomeAnnotation的Annotation
            if(method. isAnnotationPresent(SomeAnnotation. class)){
                System. out. println( "找到SomeAnnotation");
                //得到SomeAnnotation
                SomeAnnotation annotation = method. getAnnotation(SomeAnnotation. class);
                System. out. println( "annotation.value="+annotation. value());
                System. out. println( "annotation.name="+annotation. name());
            } else{
                System. out. println( "没有找到omeAnnotation");
            }
        } catch (SecurityException e) {
            e. printStackTrace();
        } catch (NoSuchMethodException e) {
            e. printStackTrace();
        }
    }
}

输出结果:
找到SomeAnnotation
annotation.value=value1
annotation.name=name1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值