博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA注解Annotation介绍
阅读量:4209 次
发布时间:2019-05-26

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

Java自带的注解

  1. @Deprecated 表明当前的元素已经不推荐使用
  2. @Override 表明当前方法是覆盖了父类方法
  3. @SuppressWarnings 关闭不当的编译器警告信息

自定义注解

@interface Empty{
String field1() default "it's empty"; //default 设置默认值}@Empty //使用 default默认值"it's empty"class C{
}//如果没有使用default设置默认值的话,field必须显式传入参数,如下@Empty(field1="empty A")class A{
}@interface Value{
String value(); String other() default "it's great";}@Value("empty B") //当注解有一个方法value时,没有其他方法或者其他方法有默认值,不需要指明具体方法class B{
}

元注解

@Documented

被修饰的注解会生成到javadoc中

@Documented@interface DocumentedAnnotation{ }@interface UnDocumentedAnnotation{}@DocumentedAnnotation@UnDocumentedAnnotationclass A{}

@Retention

可以设置注解的级别

//RetentionPolicy是一个枚举类,默认是CLASS,此外还可选择SOURCE,RUNTIME@Retention(RetentionPolicy.CLASS) @interface ClassRetentionAnnotation{}
  • SOURCE代表源码级别,注解只存在源码中,其功能是与编译器交互,用于代码检测,如@Override,@SuppressWarings,许多框架如Dragger就是使用这个级别的注解,这个级别的框架额外效率损耗发生在编译时

  • CLASS代表字节码级别,注解存在源码与字节码文件中,主要用于编译时生成而外的文件,如XML,Java文件等,这个级别需要添加JVM加载时候的代理(javaagent ),使用代理来动态修改字节码文件(由于Android虚拟机并不支持所以本专题不会再做介绍,在Android中可以使用aspectJ来实现类似这个级别的功能)

  • RUNTIME代表运行时级别,注解存在源码,字节码与Java虚拟机中,主要用于运行时反射获取相关信息,许多框架如OrmLite就是使用这个级别的注解,这个级别的框架额外的效率损耗发生在程序运行时

@Target

限制注解的元素种类

@Target(ElementType.METHOD) //限制了注解只能修饰方法,ElementType是一个枚举类@Retention(RetentionPolicy.SOURCE)public @interface Override{
}

@Inherited

让子类类对象使用getAnnotations()反射获取父类被@Inherited修饰的注解

@Inherited@Retention(RetentionPolicy.Runtime)@interface Inheritable{}@interface UnInheritable{}public class Test{
@UnInheritable @Inheritable public static class Super{
} public static class Sub extends Super {
} public static void main(String... args){ Super instance=new Sub(); System.out.println(Arrays.toString(instance.getClass().getAnnotations())); }}

转载地址:http://atqli.baihongyu.com/

你可能感兴趣的文章
九度OJ 1087:约数的个数 (数字特性)
查看>>
九度OJ 1088:剩下的树 (线段树)
查看>>
九度OJ 1089:数字反转 (数字反转)
查看>>
九度OJ 1090:路径打印 (树、DFS)
查看>>
九度OJ 1091:棋盘游戏 (DP、BFS、DFS、剪枝)
查看>>
九度OJ 1092:Fibonacci (递归)
查看>>
九度OJ 1093:WERTYU (翻译)
查看>>
九度OJ 1094:String Matching(字符串匹配) (计数)
查看>>
九度OJ 1095:2的幂次方 (递归)
查看>>
九度OJ 1471-1480(10/10)
查看>>
九度OJ 1481-1490(7/10)
查看>>
九度OJ 1491-1500(5/10)
查看>>
九度OJ 1501-1510(10/10)
查看>>
业务系统中,报表统计功能如何组织--统计分析模块参考
查看>>
面向数据集成的ETL技术研究
查看>>
DataStage(ETL)技术总结 -- 介绍篇(转载)
查看>>
Greenplum技术浅析--vs oracle RAC
查看>>
框架一
查看>>
Oracle-内存管理解读
查看>>
Oracle-PFILE和SPFILE解读
查看>>