首页 > 代码库 > JAVA 注解
JAVA 注解
使用一种对代码级别的说明,在JDK5.0引入支持的新特性,与类、接口、枚举同属一个层次。声明使用在包、类、字段、方法、局部变量、方法参数等前面,对这些元素进行说明注释。可以作为编译检查、生成说明文档、代码分析等功能。
JDK提供的基本注解
- @SuppressWarnings
阻止编译器发出的某些警告信息
- deprecation:使用了过时的类或方法时的警告
- unchecked:执行了未检查的转换时的警告
- fallthrough:当switch 程序块直接通往下一种情况而没有break 时的警告
- path:在类路径、源文件路径等中有不存在的路径时的警告
- serial:当在可序列化的类上缺少 serialversionuid 定义时的警告
- finally:任何 finally 子句不能正常完成时的警告
- all:关于以上所有情况的警告
- @Deprecated
标记某个过时的类或方法
- @Override
标记重写父类的方法
元注解
@Retention
标记该注解的声明周期,具有如下参数:RetentionPolicy.SOURCE
:指定注解只保留在一个源文件中RetentionPolicy.CLASS
:指定注解只保留在一个class文件中(默认值)RetentionPolicy.RUNTIME
:指定注解可以保留在程序运行期间
@Target
标记该注解可以被声明在哪些元素前,具有如下参数:ElementType.TYPE
:该注解只能被声明在一个类前ElementType.FIELD
:该注解只能被声明在一个类的字段前ElementType.METHOD
:该注解只能被声明在一个类的方法前ElementType.PARAMETER
:该注解只能被声明在一个方法参数前ElementType.CONSTRUCTOR
:该注解只能声明在一个类的构造方法前ElementType.LOCAL_VARIABLE
:该注解只能声明在一个局部变量前ElementType.ANNOTATION_TYPE
:该注解只能声明在一个注解类型前ElementType.PACKAGE
:该注解只能声明在一个包名前
@Document
标记该注解可以被javadoc工具提取成文档。- @Inherited
标记该注解具有继承性,如果某类该注解修饰,那么其子类自动使用该注解修饰。
定义注解
@Retention(RetentionPolicy.RUNTIME)public @interface MyTag { //定义字段,并指定默认值 String name() default "java"; int age() ;}
默认情况下,注解可以修饰任何程序元素,包括类、接口、方法等。
使用注解
@MyTag(age =10)public class AnnotationTest {}
未赋默认值的字段,使用注解必须赋值。
提取注解信息
通过java.lang.reflect
包下的AnnotatedElement
,获取注解的程序元素,主要有如下实现类:Class、Constructor、Field、Method、Package
。
AnnotatedElement
接口主要提供以下方法获取注解信息:
- getAnnotation(Class<Annotation> annotationClass)
:获取指定注解,不存在则返回null
- getAnnotations()
:获取程序元素上存在的所有注解
- isAnnotationPresent(Class<? extends Annotation> annotationClass)
:判断该元素是否存在指定注解
import java.lang.annotation.Annotation;public class Main { public static void main(String[] args) { AnnotationTest test = new AnnotationTest(); Annotation[] annotations = test.getClass().getAnnotations(); for (Annotation annotation : annotations) { System.out.println(annotation.toString()); } }}
输出结果:@com.annotation.MyTag(name=java, age=10)
JAVA 注解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。