标注

来源:互联网 发布:幸运28封盘机器人源码 编辑:程序博客网 时间:2024/04/27 07:14

标注:一种元数据,用来说明代码的特性,不属于程序本身,也不会对被标注的代码产生任何影。

1.标注的作用

a:为编译器提供信息,如去检测错误或是“不提示警告”
b:Compile-time and deployment-time processing — Software tools can process annotation information to generate code, XML files, and so forth
c:运行期处理

2.标注格式

@Entity例如:@Override同时标注也能包涵命名的或无名的elements,如:

这里写图片描述
这里写图片描述

如果标注有同样的类型,则成为重复标注,Java8支持重复标注,如:
这里写图片描述
在java.lang和java.lang.annotation中的标注成为预定义的标注。同时,java支持自定义的标注,如这里的Author标准。
自定义的标注一般是用来取代注释的,用来增加代码的可读性。
如之前的注释风格的:

这里写图片描述

将上述的注释变成一种元数据Annotation,首先定义annotation类,语法如下:
这里写图片描述

注意:为了让自定义的@classPreamble能够出现在Javadoc-generated文档中,你需要在@classPreamble定义的时候加上@Documented标注,如:
这里写图片描述

3.内置标注类型

分为两种:一种是给Java编译器看的,一种是用来限制说明其他标注的。

Java编译器看的:

在java.lang中定义的标注有:@Deprecated, @Override, and @SuppressWarnings@Deprecated:用来说明被标注的元素可以以后不会在使用。当你使用这些元素的时候,编译器会给出警告。@Override:要编译器检测错误,表明该元素是被重载的。@SuppressWarnings:告诉编译器不要产出特定类型的警告。

这里写图片描述

对于编译器的警告都属于特定的类型,在java语言规范中给出了两种类型:deprecation和unchecked.可以抑制多种警告,如:

@SuppressWarnings({"unchecked", "deprecation"})@SafeVarargs :用来表明方法不会执行关于varargs的不安全的操作。抑制关于varargs的警告。@FunctionalInterface :表明给接口是功能接口(javase8新加入的)

说明其他标注的:java.lang.annotation中

@Retention :标记被修饰的标注如何存储,具体方式有:RetentionPolicy.SOURCE :被修饰的标注仅留中源码中,编译器会忽略这些标注。RetentionPolicy.CLASS :会被编译器保留,但是会被JVM忽略。RetentionPolicy.RUNTIME :存在运行期中@Documented :表示被修饰的标注信息会输出到javadoc中(默认是不会javadoc工具处理的)@Target :现在被修饰的标注能够作用的域,其值可为:ElementType.PARAMETERElementType.LOCAL_VARIABLE 等。@Repeatable :表明标注可重复@Inherited

0 0
原创粉丝点击