黑马程序员技术交流社区

标题: 我对注解注意点的总结。 [打印本页]

作者: 李春丽    时间: 2014-9-28 21:39
标题: 我对注解注意点的总结。
7,注解。 1.5以后的新特性。
Annotation Typese 注解类  在java.lang包中,
@ Deprecated 给方法注释为“过时”
@ Override 给方法注释为“覆写”,系统自动判断方法是否为覆写。
@ SuppressWarnings eg:@SuppressWarnings(“deprecation”)//编译器不再提示过时。
>> 注解:相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事,标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
>> @Retention元注解:其三种取值:RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME
> 文件编译运行的三个阶段:Javac把源文件翻译成class文件,类加载器把class文件调到内存中来。
@Retention 元注解的默认值是在class阶段。
@Overridesource阶段
@SuppressWarningssource阶段
@Deprecated runtime阶段。
元注解:注解的注解。元数据、元信息。
>> @Target元注解,指示定义在什么上的注解,方法?类?成员等。
@Retention和@Target不用特意去记,api中输入@Override,开头就有这两个。
为注解类增加基本属性,应用。
//注解类的写法:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
  String color() default "blue";//字符串,并设置缺省字符。
  String value();
  int[] arrayAttr()default {3,4,4};//数组
  EnumTest.TrafficLamplamp() default EnumTest.TrafficLamp.RED;//枚举
  MetaAnnotationannotationAttr() default @MetaAnnotation("lhm");//另写的一个注解类,只有一个值。
}
//在类中调用注解类:
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1)
public class AnnotationTest {
  @SuppressWarnings("deprecation")
  @ItcastAnnotation("xyz")
  public static void main(String[]args) throws Exception{
      if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){//判断是不是注解。
          ItcastAnnotation annotation=     //用反射获取该类的注解类。
(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
          System.out.println(annotation.color());
          System.out.println(annotation.value());
          System.out.println(annotation.arrayAttr().length);
          System.out.println(annotation.lamp().nextLamp().name());
          System.out.println(annotation.annotationAttr().value());
      }
  }
  @Deprecated //设置为过时。
  public static void sayHello(){
      System.out.println("hi,传智播客");
  }
}
      Method mainMethod =AnnotationTest.class.getMethod("main", String[].class);
      ItcastAnnotation annotation2 =
(ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);
      System.out.println(annotation2.value());

作者: wyf20106    时间: 2014-9-28 21:58
赞!!!
作者: wisderm    时间: 2014-9-28 22:03
感谢分享,楼主加油!!面试的路上
作者: wszbw    时间: 2014-9-28 22:26
楼主好样的,赞一个!!
作者: 杨佳名    时间: 2014-9-29 23:51
留着。。
作者: M_______r    时间: 2014-9-29 23:59
{:3_51:}{:3_51:}留着了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2