
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发语言是目前大多数人转行互联网行业都会去学习的一种编程开发语言,今天我们就简单来了解一下,Java编程注解基础知识分享。
1、Java注解基础
注解是JDK1.5版本开始引入的一个特性,用于对程序代码的说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。
它主要的作用有以下四方面:
生成javadoc文档,通过在代码里面标识元数据生成javadoc文档。
编译期的检查,通过标识的元数据让编译器在编译期间对代码进行验证。
编译时动态处理,编译时通过代码中标识的元数据动态处理,比如动态生成代码。
运行时动态处理,运行时通过代码中标识的元数据动态处理,比如使用反射技术注入实例。
注解的常见分类有三种:
Java自带的标准注解,包括@Override、@Deprecated和@SuppressWarnings,分别代表方法重写、某个类或方法过时、以及忽略警告,用这些注解标明后编译器就会进行检查。
元注解,元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented等6种
@Retention:指定其所修饰的注解的保留策略
@Document:该注解是一个标记注解,用于指示一个注解将被文档化
@Target:用来限制注解的使用范围
@Inherited:该注解使父类的注解能被其子类继承
@Repeatable:该注解是Java8新增的注解,用于开发重复注解
类型注解(TypeAnnotation):该注解是Java8新增的注解,可以用在任何用到类型的地方
自定义注解,可以根据自己的需求定义注解,并可用元注解对自定义注解进行注解。
2、注解与反射接口
定义注解后,如何获取注解中的内容呢?反射包java.lang.reflect下的AnnotatedElement接口提供这些方法。这里注意:只有注解被定义为RUNTIME后,该注解才能是运行时可见,当class文件被装载时被保存在class文件中的Annotation才会被虚拟机读取。
AnnotatedElement接口是所有程序元素(Class、Method和Constructor)的父接口,所以程序通过反射获取了某个类的AnnotatedElement对象之后,程序就可以调用该对象的方法来访问Annotation信息。我们看下具体的先关接口
booleanisAnnotationPresent(ClassannotationClass)
判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false。注意:此方法会忽略注解对应的注解容器。
TgetAnnotation(ClassannotationClass)
返回该程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。
Annotation[]getAnnotations()
返回该程序元素上存在的所有注解,若没有注解,返回长度为0的数组。
T[]getAnnotationsByType(ClassannotationClass)
返回该程序元素上存在的、指定类型的注解数组。没有注解对应类型的注解时,返回长度为0的数组。该方法的调用者可以随意修改返回的数组,而不会对其他调用者返回的数组产生任何影响。getAnnotationsByType方法与getAnnotation的区别在于,getAnnotationsByType会检测注解对应的重复注解容器。若程序元素为类,当前类上找不到注解,且该注解为可继承的,则会去父类上检测对应的注解。
TgetDeclaredAnnotation(ClassannotationClass)
返回直接存在于此元素上的所有注解。与此接口中的其他方法不同,该方法将忽略继承的注释。如果没有注释直接存在于此元素上,则返回null
T[]getDeclaredAnnotationsByType(ClassannotationClass)
返回直接存在于此元素上的所有注解。与此接口中的其他方法不同,该方法将忽略继承的注释
Annotation[]getDeclaredAnnotations()
返回直接存在于此元素上的所有注解及注解对应的重复注解容器。与此接口中的其他方法不同,该方法将忽略继承的注解。如果没有注释直接存在于此元素上,则返回长度为零的一个数组。该方法的调用者可以随意修改返回的数组,而不会对其他调用者返回的数组产生任何影响。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。