20190928 On Java8 第二十三章 注解
第二十三章 注解
定义在 java.lang
包中的5种标准注解:
@Override
:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,编译器就会发出错误提示。@Deprecated
:如果使用该注解的元素被调用,编译器就会发出警告信息。@SuppressWarnings
:关闭不当的编译器警告信息。@SafeVarargs
:在 Java 7 中加入用于禁止对具有泛型varargs参数的方法或构造函数的调用方发出警告。@FunctionalInterface
:Java 8 中加入用于表示类型声明为函数式接口
基本语法
从语法的角度上看,注解的使用方式和修饰符的使用方式一致。
定义注解
@Target
定义你的注解可以应用在哪里(例如是方法还是字段)。@Retention
定义了注解在哪里可用,在源代码中(SOURCE),class文件(CLASS)中或者是在运行时(RUNTIME)。
不包含任何元素的注解称为标记注解(marker annotation)。
元注解
Java 语言中目前有 5 种标准注解,以及 5 种元注解。
元注解用于注解其他的注解:
注解 | 解释 |
---|---|
@Target
|
表示注解可以用于哪些地方。可能的ElementType 参数包括:CONSTRUCTOR :构造器的声明FIELD :字段声明(包括 enum 实例)LOCAL_VARIABLE :局部变量声明METHOD :方法声明PACKAGE :包声明PARAMETER :参数声明TYPE :类、接口(包括注解类型)或者 enum 声明
|
@Retention
|
表示注解信息保存的时长。可选的RetentionPolicy 参数包括:SOURCE :注解将被编译器丢弃CLASS :注解在 class 文件中可用,但是会被 VM 丢弃。RUNTIME :VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息。
|
@Documented
|
将此注解保存在 Javadoc 中 |
@Interited
|
允许子类继承父类的注解 |
@Repeatable
|
允许一个注解可以被使用一次或者多次(Java 8)。 |
编写注解处理器
使用注解中一个很重要的部分就是,创建与使用注解处理器。Java 拓展了反射机制的 API 用于帮助你创造这类工具。同时他还提供了 javac 编译器钩子在编译时使用注解。
注解元素
注解元素可用的类型如下所示:
- 所有基本类型(int、float、boolean等)
- String
- Class
- enum
- Annotation
- 以上类型的数组
默认值限制
元素要么有默认值,要么就在使用注解时提供元素的值。
这里有另外一个限制:任何非基本类型的元素, 无论是在源代码声明时还是在注解接口中定义默认值时,都不能使用 null 作为其值。
生成外部文件
在 @Target
注解中指定的每一个 ElementType 就是一个约束,它告诉编译器,这个自定义的注解只能用于指定的类型。你可以指定 enum ElementType
中的一个值,或者以逗号分割的形式指定多个值。如果想要将注解应用于所有的 ElementType,那么可以省去 @Target 注解,但是这并不常见。
快捷方式特性:如果你在注解中定义了名为 value
的元素,并且在使用该注解时,value 为唯一一个需要赋值的元素,你就不需要使用名—值对的语法,你只需要在括号中给出 value 元素的值即可。这可以应用于任何合法类型的元素。这也限制了你必须将元素命名为 value.
替代方案
在 Java 8,在使用多个注解的时候,你可以重复使用同一个注解。
注解不支持继承
转载于:https://www.cnblogs.com/huangwenjie/p/11604568.html
20190928 On Java8 第二十三章 注解相关推荐
- 数字图像处理:第二十三章 基于内容的图象与视频检索
第二十三章基于内容的图象与视频检索 目录 1. 引言 2. 基于内容检索的图象特征 3. 基于内容的视频标注与检索 作业 1. 引言 随着社会的信息化发展日益深入,互连网日益普及,越 ...
- 第二十三章 SQL函数 CAST(二)
文章目录 第二十三章 SQL函数 CAST(二) 转换位值 示例 第二十三章 SQL函数 CAST(二) 转换位值 可以将expr值转换为BIT以返回0或1. 如果expr为1或任何其他非零数值,则返 ...
- 【正点原子MP157连载】第二十三章 Linux设备树-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 【正点原子Linux连载】第二十三章 音频应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1
第二十三章 音频应用编程 ALPHA I.MX6U开发板支持音频,板上搭载了音频编解码芯片WM8960,支持播放以及录音功能! 本章我们来学习Linux下的音频应用编程,音频应用编程相比于前面几个章节 ...
- 《快速掌握PyQt5》第二十三章 主窗口QMainWindow
第二十三章 主窗口QMainWindow 23.1 记事本应用 23.3 程序启动画面QSplashScreen 23.2 小结 <快速掌握PyQt5>专栏已整理成书出版,书名为<P ...
- 第二十三章 类关键字 - Language
文章目录 第二十三章 类关键字 - Language 用法 详解 对子类的影响 默认 第二十三章 类关键字 - Language 指定用于实现此类方法的默认语言. 用法 若要指定用于实现此类中的方法的 ...
- 【信息系统项目管理师】第二十三章 信息系统综合测试与管理(考点汇总篇)
[信息系统项目管理师]第二十三章 信息系统综合测试与管理(考点汇总篇) 考点分析与预测 本章内容属于第三版教材新增的内容,总共80多页,但在上午考试中只考2分.一般来说还会在案例分析中涉及一个关于测试 ...
- 系统集成项目管理工程师(软考中级)—— 第二十三章 风险管理 笔记分享
前言 现在分享一些笔记给大家,希望能够帮助大家并顺利通过软考. 幕布地址:第二十三章 风险管理 - 幕布 概述 大数据 ITO 4W1H 风险 概念 风险是一种不确定的事件或条件,一旦发生,就会产生积 ...
- 第二十三章 使用 %Status 值
文章目录 第二十三章 使用 %Status 值 使用状态值的基础知识 示例 状态值中报告的多个错误 返回状态值 第二十三章 使用 %Status 值 许多类使用 %Status 数据类型类来表示状态信 ...
最新文章
- 时间立即同步命令_Redis复制:主从同步
- vue 定义全局函数
- 汇编环境搭建(vs2010(2012)+masm32)
- JZOJ 2308. 【中山市选2011】聚会
- SQL Server语句大全(增删改查数据、创建表、删除表、修改表)
- 让人难以置信的HTML5和JavaScript实验
- 数据库实例:mysql与mongo结合用户登录
- Delphi XE10百集视频教程计划
- 虚拟机win7装oracle,大神教你win7系统安装Oracle VM VirtualBox虚拟机的处理教程
- 自动化运维工具puppet学习笔记之基础篇
- win10如何合并硬盘分区
- 专业精神-希波克拉底的誓言(转载)
- 本站最全-unity常用API大全(万字详解),不信你不收藏
- 市场热度持续提升!4D成像雷达进入「细分场景争夺战」
- Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤
- 解决:java.lang.IllegalArgumentException: Can not set java.lang.Boolean field
- 时间--cd //lastyear
- 快递物流查询,教你自动查询并识别所有快递是否签收、退回
- Microsoft Teams中的访客(三)--访客的管控
- 毕业设计Java超市积分管理系统源码资料+项目视频说明+项目截图