A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李春丽 中级黑马   /  2014-9-28 21:39  /  1497 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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());

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
赞!!!
回复 使用道具 举报
感谢分享,楼主加油!!面试的路上
回复 使用道具 举报
楼主好样的,赞一个!!
回复 使用道具 举报
留着。。
回复 使用道具 举报
{:3_51:}{:3_51:}留着了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马