写点什么

28《重学 JAVA》-- 注解

作者:杨鹏Geek
  • 2021 年 12 月 29 日
  • 本文字数:890 字

    阅读完需:约 3 分钟

28《重学JAVA》--注解

一、注解介绍

注解并不能改变程序运行的结果,不会影响程序运行的性能。有些注解可以在编译时给用户提示或警告,有的注解可以在运行时读写字节码文件信息。

它的形式跟接口很类似,不过前面多了一个 @符号。上面的代码就创建了一个名字为 TestAnnotaion 的注解。

你可以简单理解为创建了一张名字为 TestAnnotation 的标签。

创建一个类 Test,然后在类定义的地方加上 @TestAnnotation 就可以用 TestAnnotation 注解这个类了。

你可以简单理解为将 TestAnnotation 这张标签贴到 Test 这个类上面。

 

无论是哪一种注解,本质上都一种数据类型,是一种接口类型。到 Java8 为止 JavaSE 提供 11 种内置注解。其中有 5 是基本注解,它们来自于 java.lang 包。有 6 个是元注解 1(Meta-Annotation),它们来自于 java.lang.annotation 包,自定义注解会用到元注解。

二、元注解

元注解包括:@Documented、@Target、@Retention、@Inherited、@Repeatable 和 @Native。元注解是为其他注解进行说明的注解,当自定义一个新的注解类型时,其中可以使用元注解。

这里简单介绍一下常用的元注解

 

Target 注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方) 。

 

Target 注解用来说明那些被它所注解的注解类可修饰的对象范围:

注解可以用于修饰 packages、types(类、接口、枚举、注解类)、类成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch 参数),在定义注解类时使用了 @Target 能够更加清晰的知道它能够被用来修饰哪些对象,它的取值范围定义在 ElementType 枚举中。  

 

Reteniton 注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在 RetentionPolicy 枚举中。

 

Documented 注解的作用是:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。

为了验证 Documented 注解的作用到底是什么,我们创建一个带有 @Documented 的自定义注解类。 

 

Inherited 注解的作用是:使被它修饰的注解具有继承性(如果某个类使用了被 @Inherited 修饰的注解,则其子类将自动具有该注解)。

接下来我们使用代码来进行测试,首先创建一个被 @Inherited 修饰的注解类 MyInheritedAnnotation。 

 

发布于: 刚刚
用户头像

杨鹏Geek

关注

你必须比别人更努力 才能看起来毫不费力! 2019.10.26 加入

码农

评论

发布
暂无评论
28《重学JAVA》--注解