zoukankan      html  css  js  c++  java
  • 自定义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

  • 相关阅读:
    HDU 3605 Escape 最大流
    HDU 3416 Marriage Match IV (最短路径&&最大流)
    洛谷1508 简单记忆化搜索
    洛谷1880 区间dp+记忆化搜索 合并石子
    洛谷1063 +区间dp(经典问题)
    洛谷1074 靶状数独dfs 排序、记录、搜索
    hdu3368 dfs 下棋
    hdu1258 dfs 给一个指定的target数和一个数列,要求不重复选择其中的数使得和为target并打印,结果不可重复。
    hdu1181 dfs 字符串首尾可拼接,问是否可寻找到一条字串路径使得首尾分别是‘b’和‘m’,简单的搜索+回溯
    hdu1078 dfs+dp(记忆化搜索)搜索一条递增路径,路径和最大,起点是(0,0)
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/2284882.html
Copyright © 2011-2022 走看看