博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础篇4之注解
阅读量:4487 次
发布时间:2019-06-08

本文共 1833 字,大约阅读时间需要 6 分钟。

1 注解的应用(jdk1.5的新特性)

  一个注解相当于一个特殊的类

  例子:
  @SuppressWarning("deprecation")
  @Deprecated
  @Override

  注解相当于一种标记,在程序中加了注解等于为程序打上了某种标记,编译器和工具类通过反射来了解你的类及某种元素

  上有无何种标记,有标记就去干相应的事
  标记可以加在包,类,字段,方法,方法的参数以及局部变量上

2 注解的定义与反射调用

  注解类

  @interface A{}

  应用了“注解类”的类

  @A
  class B{}

  对“应用了注解类的类”进行反射操作的类

  class C{
    B.class.isAnnotionPresent(A.class);
    A a = B.class.getAnnotion(A.class)
  }

例子如下:

  //元注解    @Retention(RetentionPolicy.RUNTIME)    public @interface itcastAnnotation{}    @itcastAnnotation    public class AnnotationTest{        if(AnnotationTest.class.isAnnotionPresent(itcastAnnotation.class)){            itcastAnnotation annotaion =(itcastAnnotation)AnnotationTest.class.getAnnotion(itcastAnnotation.class);        }    }

Annotation保留生命周期

1、RetentionPolicy.SOURCE (编译器查看)
2、RetentionPolicy.CLASSS (默认)
3、RetentionPolicy.RUNTIME (运行时阶段,检查二进制代码)

@Target(ElementType.METHOD,ElementType.TYPE)

注解的应用范围

 

3 为注解增加各种属性

  @Retention(RetentionPolicy.RUNTIME)    public @interface itcastAnnotation{        String color() default "bule";        String value(); //只有一个属性,则可以省略属性名称        int[] arrayAttr() default {1,2,3};        EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;        MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");    }    @itcastAnnotation(annotationAttr=@MetaAnnotation("fix"),color="red",arrayAttr={3,4,5})    @itcastAnnotation("xyz")    public class AnnotationTest{        if(AnnotationTest.class.isAnnotionPresent(itcastAnnotation.class)){            itcastAnnotation annotaion =(itcastAnnotation)AnnotationTest.class.getAnnotion(itcastAnnotation.class);            annotaion.color//red                annotation.annotationAttr().value();//fix            }    }  public @interface MetaAnnotation {      String value();  }

 

转载于:https://www.cnblogs.com/atomicbomb/p/6624222.html

你可能感兴趣的文章
MySQL常用存储引擎:MyISAM与InnoDB之华山论剑
查看>>
MVC5+EF6 --自定义控制Action访问权限
查看>>
[CF786B] Legacy
查看>>
Spring 注解@Component,@Service,@Controller,@Repository
查看>>
设置RDLC中table控件的表头在每页显示
查看>>
linux中tomcat内存溢出解决办法 分类: 测试 ...
查看>>
jQuery $.each用法
查看>>
[Luogu 3902]Increasing
查看>>
clear语句处理不同类型的数据结果
查看>>
HDU 6118 度度熊的交易计划(费用流)
查看>>
UrlEncode编码/UrlDecode解码使用方法
查看>>
使用ubuntu作为web开发环境的一些感受
查看>>
easyui-datagrid 自适应列宽问题
查看>>
OO第一次总结
查看>>
VS2012发布网站详细步骤
查看>>
文件下载隐匿执行
查看>>
【导图控】各软件开发版本详解
查看>>
HDU 1533 Going home
查看>>
Extjs面板和布局初探
查看>>
箭头函数
查看>>