javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解
来源:互联网 发布:mac怎么解压rar文件 编辑:程序博客网 时间:2024/06/05 04:24
下面要谈到的一组注解类型是在Java SE API中预定义的。一些注解类型由Java编译器使用,一些注解类型也适用于其他注释
Java语言使用的注解类型
预定义的注解类型定义在
java.lang 这个包中,他们是:@Deprecated
, @Override
, and @SuppressWarnings等……
@Deprecated
@Deprecated
注解表示标记的元素已被弃用,不应再使用。只要程序使用带有@Deprecated注解的方法,类或字段,编译器就会生成警告。当不推荐使用元素时,还应使用Javadoc @deprecated标记进行记录,如以下示例所示。在Javadoc注解和注解中使用at符号(@)并不是偶然的:它们在概念上是相关的。另外请注意,Javadoc标记以小写字母d开头,注释以大写字母D开头。
// Javadoc comment follows /** * @deprecated * explanation of why it was deprecated */ @Deprecated static void deprecatedMethod() { }}
@Override
@Override
@Override注解通知编译器元素意图覆盖在超类中声明的元素。接口和继承中将讨论覆盖方法。
// mark method as a superclass method // that has been overridden @Override int overriddenMethod() { }
虽然在覆盖方法时不需要使用此注解,但有助于防止错误。如果标记为@Override的方法无法正确覆盖其一个超类中的方法,则编译器会生成错误。
@SuppressWarnings
@SuppressWarnings
@SuppressWarnings注解告诉编译器抑制它将会生成的特定警告。在以下示例中,使用了不推荐使用的方法,编译器通常会生成警告。然而,在这种情况下,注解会导致警告被抑制。
// use a deprecated method and tell // compiler not to generate a warning @SuppressWarnings("deprecation") void useDeprecatedMethod() { // deprecation warning // - suppressed objectOne.deprecatedMethod(); }
每个编译器警告都属于一个类别。 Java语言规范列出了两个类别:deprecation
和 unchecked。当与泛型出现之前编写的遗留代码进行接口时,可能会发生未经检查的警告。要抑制多个类别的警告,请使用以下语法:
@SuppressWarnings({"unchecked", "deprecation"})
@SafeVarargs
@SafeVarargs
@SafeVarargs注解,当应用于方法或构造函数时,断言该代码不对其varargs参数执行潜在的不安全操作。当使用此注释类型时,与varargs使用相关的未选中的警告被抑制。
@FunctionalInterface
@FunctionalInterface
functionalinterface文字注释,介绍了java SE 8,表明该类型声明是一个功能接口,由java语言规范定义。
在注解中使用其他的注解:
适用于其他注释的注释称为元注解。在java.lang.annotation中定义了几个元注解类型。
@Retention
@Retention 注解指定如何存储标记的注解: RetentionPolicy.SOURCE - 标记的注解仅在源级别保留,并被编译器忽略。 RetentionPolicy.CLASS - 标记的注解由编译器在编译时保留,但被Java虚拟机(JVM)忽略。RetentionPolicy.RUNTIME - 标记的注解由JVM保留,因此可以由运行时环境使用。
@Documented
@Documented注解指示每当使用指定的注解时,应使用Javadoc工具记录这些元素。 (默认情况下,注释不包括在Javadoc中。)有关详细信息,请参阅Javadoc工具页面。
@Target
@Target注解标记另一个注解,以限制注解可应用于哪种类型的Java元素。目标注解指定以下元素之一作为其值:
ElementType.ANNOTATION_TYPE:可以应用于注解类型。
ElementType.CONSTRUCTOR:可以应用于构造函数。
ElementType.FIELD:可以应用于一个字段或属性。
ElementType.LOCAL_VARIABLE:可以应用于局部变量。
ElementType.METHOD:可以应用于方法级注解。
ElementType.PACKAGE:可以应用于包的声明。
ElementType.PARAMETER:可以应用于一个方法的参数。
ElementType.TYPE:可以应用于类的任何元素。
@Inherited
@Inherited注解表示注解类型可以从超级类继承。 (默认情况下不是这样)。当用户查询注解类型并且类没有此类型的注解时,会为该类的“超类”查询注解类型。此注解仅适用于类声明。
@Repeatable
@Repeatable注解,在Java SE 8中引入,表示标记的注解可以多次应用于同一声明或类型使用。有关详细信息,请参阅重复注解。
阅读全文
0 0
- javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解
- javaSE_8系列博客——Java语言的特性(四)--注解--(1)--基础知识
- javaSE_8系列博客——Java语言的特性(四)--注解--(5)-- 如何使用自定义的注解?
- javaSE_8系列博客——Java语言的特性(四)--注解--(2)-- 声明一个注解
- javaSE_8系列博客——Java语言的特性(四)--注解--(4)-- 类型注解和可插拔类型系统
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识
- javaSE_8系列博客——Java语言的特性(三)--类和对象(3)--类的声明
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(3)--实现接口
- JavaSE_8系列博客——Java语言的特性(六)--泛型(3)--泛型和类型通配符
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(1)-- 变量
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(4)-- 变量和数组
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(5)-- 运算符
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(6)-- 表达式、语句、块
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(7)-- 流程控制语句
- JavaSE_8系列博客——Java语言的特性(六)--泛型(4)--Java中泛型实现的原理
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(1)
- javaSE_8系列博客——Java语言的特性(一)--关于面向对象基本概念的理解(2)--对象
- javaSE_8系列博客——Java语言的特性(三)--类和对象(9)--对象的创建
- 1024: [SCOI2009]生日快乐
- javaday51_IO流_IO综合练习
- solr 增量同步问题
- ubuntu开机进不了桌面
- C# 多线程
- javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解
- JDBC-简单查询
- 数据库索引问题单反思
- 灵活操作Python列表
- 【NOIP2016复赛模拟赛2】遭遇战
- ajax数据交互
- shell 2>&1 含义 与 扩展
- 使用Ajax抓取远程网页源代码并抓取其中图片【老司机不须再用】
- init rc中创建文件