注解可以分为2类:
     1.元注解(Meta):系统预定义的.
         用来注释注解的注解(元注解本身就是注解.用来修饰别的注解)
         所以元注解时写在注解类上的
         在JDK1.5时内置了4个元注解:
         @Target:表示该注解用在什么地方.使用ElementType来解释.
             Constructor 构造方法
             Method  普通方法
             Field   成员变量
             Type     类
             ElementType.LOCAL_VARIABLE 局部变量
             PACKAGE 包
         @Retention:表示需要在什么级别保存注解的信息.使用RetentionPolicy来解释
             RUNTIME 在JVM运行期间会保留下来的注解.我们可以通过反射来读取注解里面的内容.
             CLASS   将会在class文件中,但是会被JVM抛弃.
             SOURCE  将会被编译器抛弃.
         @Documented
             该注解包含在JavaDoc文档中
         @Inherited
             允许子类继承父类的注解.
     
     2.标记注解(Marker):指注解中没有任何元素

 

注解用途:

        1.switch
        2.常量(1年中的12个月.1个星期的7天)

总结:

  针对方法上的注解

  1.定义一个注解解释器方法(集合list,方法所在的实体类Class<Test> c)

  2.通过反射,获取该实体类的所有方法,同时遍历

      for(Method m: c.getDeclaredMethods())

  3.在foreach内部,针对每个方法进行操作

      for(Method m: c.getDeclaredMethods()){

          4.从方法上获取所有的指定类型的注解

           MyAnnotation ma=m.getAnnotation(MyAnnotation.class)

          5.判断ma是否为null,如果不为null,则获取id,和description

           if(ma!=null){

             System.out.println("发现注解元素:"+ma.id())
                        System.out.println("发现注解元素:"+ma.description())

             list.remove(new Integer(ma.id()));//移除已经存在的注解id,list中剩下的就是没有发现的注解元素

           }

      }