Java面试篇基础部分-Java注解详解
什么是注解
注解(Annotation)首先是Java语言提供了一种设置程序中元素关联关系的方法。是一个接口,程序可以通过反射机制获取到指定的程序元素中的注解对象,然后通过该注解对象获取到注解元素中的相关信息。
注解和注释有什么区别?
-
(1)注解:用于描述代码,说明程序,主要目的是为了给计算机看,且能够影响程序的运行。
-
(2)注释:用于描述代码的作用和一些关键性的知识点,使用文字描述程序,是为了给程序员观看,以此来使程序员能够以快的时间了解被注释的代码。
标准的元注解
元注解(Meta-Annotation)主要负责的是对于其他注解的注解,在Java语言中定义了四个标准的元注解分别是 @Target 、@Retention、@Documented @Inherited
@Target
这个注解说明了注解所要修饰的对象范围。注解可以被用于packages、types(类、接口、枚举、注解类型)、类型成员(方法、构造方法、成员变量、枚举值类型)、方法参数和本地变量等内容上。在注解类型中声明了target,这样可以更加明确的修饰目标,target具体的类型值如下
- TYPE:用于描述类、接口或者是枚举类型
- FIELD:用于描述作用域
- METHOD:用于描述方法
- PARAMETER:用于描述方法参数
- CONSTRUCTOR:用于描述构造器函数
- LOCAL_VARIABLE:用来描述局部变量
- ANNOTATION_TYPE :用来声明一个注解
- PACKAGE:用于描述一个包
- TYPE_PARAMETER:对普通变量的声明
- TYPE_USE:用来标注任何类型的名称
@Retention
定义了该注解被保留的级别,也就是说这个主角属于什么级别的注解。主要有如下的三种类型
- SOURCE:在源文件中有效,也就是说在源文件中时被保留的。
- CLASS:在Class文件中有效,也就是说在Class文件中被保留
- RUNTIME:在运行时有效,在运行时都被保留
@Documented
表明这个注解应该被javadoc工具记录,所以可以通过javadoc类的工具文档化
@Inherited