JAVA Annotation(1)
来源:互联网 发布:网络视频直播软件 编辑:程序博客网 时间:2024/05/21 11:04
Java对元数据(MetaData)的支持,也就是Annotation(注释)。它是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具,开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
Annotation提供了一条为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被存储在Annotation的”name=value”对中。
Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来取得注释里的元数据。
使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素。
限定重写父类方法:@Override,用来指定方法覆载的,可以强制一个子类必须要覆盖父类的方法。
标识已过时:@Deprecated,用于标识某个程序元素(类,方法等)已过时,当其他程序使用已过时的类,方法时,编译器将会给出警告。
抑制编译器警告:@SuppressWarnings,指示被Annotation标识的程序元素(以及在该程序元素中的所有子元素)取消显示指定的编译器警告。
定义新的@Annotation类型使用@interface关键字,它用于定义新的Annotation类型。
Public @interface Test{
}
定义了该Annotation之后,就可以在程序任何地方来使用该Annotation,使用Annotation时的语法非常类似于public,final这样的修饰符。
@Test
Public class MyClass{
}
public@interface MyTag {
String name()default "yeeku";
int age()default 32;
}
publicclass Test4{
@MyTag
publicvoidinfo(){
}
}
Java使用Annotation接口来代表程序元素前面的注释,该接口是所有Annotation类型的父接口。除此之外,在java.lang.reflect包下新增了AnnotatedElement接口,该接口代表程序中可以接受注释的程序元素,该接口主要有如下几个实现类:
Class,Constrctor,Field,Method,Package.
当一个Annotation类型被定义为运行时Annotation后,该注释才是运行时可见,当class文件被装载时被保存在class文件中的Annotation才会被虚拟机读取。
publicstatic voidmain(String[] args)throws SecurityException, NoSuchMethodException,ClassNotFoundException{
Annotation[] aArray = Class.forName("Test4").getMethod("info").getAnnotations();
for(Annotation an :aArray){
System.out.println(an);
}
}
- Java中的Annotation(1)----三个基本Annotation
- java Annotation(1)--JDK内置Annotation
- Java Annotation (1)
- Java --Annotation 浅析1
- JAVA Annotation(1)
- java annotation(1)
- Java annotation简介1
- JAVA Annotation & 自定义Annotation
- java Annotation Annotation elements
- Java Annotation 学习(1)
- Java Annotation
- Java Annotation
- Java Annotation
- Java Annotation
- Java Annotation
- java annotation
- Java Annotation
- Java Annotation
- hdu 1788 Chinese remainder theorem again 多个数的最小公倍数
- 开卷有益——我的读书经历
- Leetcode: Convert Sorted List to Binary Search Tree
- java传值与传址
- 每个程序员都应该给自己写本书
- JAVA Annotation(1)
- [CODE]UIUC同学Jia-Bin Huang收集的计算机视觉代码合集
- FreeSwitch 的Nat导致的呼叫不通的问题
- DuiLib 之 UIVerticalLayout
- 15+ 易响应的CSS框架快速开启你的敏捷网站项目
- DuiLib 之 UIList
- 简单描述对AOP和IOC的理解
- DuiLib 之 UITabLayout
- linux进程---信号处理函数