Java注解

   * 注解能使我们发现自己程序中可能存在的错误,比如当你写了override注解的时候,你覆盖父类的方法,如果覆盖不正确,编译就不可能会通过,这样能更好的有助于我们发现错误,解决错误。
   * 注解可以让我们告诉别人我们的类库中的某个方法已经废弃了,可以使用别的方式代替。可以用deprecated注解。
   * 注解也同样可以让我们消除我们调用已经废弃的方法而产生的警告。 用@SuppressWarnings("deprecation")
   * 注解的标记可以在各种地方,如包,类,方法,变量......
   * 注解类的编写
     public @interface moom {
String str(); //一个方法,方法的返回值是String,每个用到注解的地方相当于一个Moom注解实例
     }
   * 注解的生命周期
     就是说注解是在什么情况下起作用:

     三种:在编写代码的时候(source),在编译的时候存在(class),在运行的时候存在(runtime)。
     三种其实是一个枚举,枚举的名字是:RetentionPolicy
   
   * 注解的获取与例子
     moom mo = Test.class.getAnnotation(moom.class);
     mo.str();//访问注解的方法,返回写注解时候的数值
   * 注解retention
     前面说到注解有三种类型,这个也是一个注解,它就是用来指定注解的生命周期。
     eg:
        @retention(RetentionPolicy.RUNTIME)
   * 注解target
     用来指定注解可以用在什么地方。
     eg:
        @Target(value={ElementType.METHOD}):指定名用方法上,还有type(类上),package,annotation......
   * 可以给方法设定默认值,当我们没有默认值的时候,我们可以发现在我们使用这个注解的时候我们必须给注解所拥有的方法指定
     相应的值。如下方式:String str() default "abc";这样我们就默认的设置了方法的默认返回值。在调用的时候,如果我们没有
     给他设定相应的值,它就取这个默认的值。
   * 注解里的方法可以返回好多类型,比如:string,int,数组,class,annotation,enum.....
     eg:
        public @interface moom {
String str() default "a";
int intt();
String[] stt();
Light getLight();
Retention getRoom();
Class getC();
}
     用的时候相应的设置方法如下:
        @moom(intt=1,stt={"a","b","c"},getLight=Light.GREEN,getRoom=@Retention(value = RetentionPolicy.RUNTIME),getC=String.class)
     打印设置的相关信息:
        moom mo = AnnotationTest.class.getAnnotation(moom.class);
System.out.println(mo.str());
System.out.println(mo.intt());
System.out.println(Arrays.asList(mo.stt()));
System.out.println(mo.getLight().getLigth().name());
System.out.println(mo.getRoom().value());
System.out.println(mo.getC().getName());

你可能感兴趣的:(Java注解)