@value注解_Java系列之注解

v2-84eaac52ee0b5d6310806b81a2705b3c_1440w.jpg?source=172ae18b

Java 注解(Annotation)又称之为 Java 标注、元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类、方法、属性、参数、包等,可以通过反射原理对这些元数据进行访问,注解的使用不会影响程序的正常运行,只会对编译器警告等辅助工具产生影响。

注解功能

  • 编译器可以使用注解来检测错误和取消警告;
  • 使用注解可以生成特定代码,如 ButtferKnife 使用注解简化 findViewById等;
  • 某些注解可以在运行时进行检查和操作。

定义注解

注解的定义使用 @interface 作为关键字,实际上表示自动继承了 java.lang.annotation.Annotation 接口,定义格式参考如下:

@元注解

配置参数里面的类型包括基本类型、String、class、枚举以及相关类型的数组,可以使用 default 设置配置参数的默认值,定义一个注解具体如下:

@Target

内置注解

  1. @Override
  2. @Deprecated
  3. @SuppressWarnings

下面是上面三个内置注解的声明:

//表示当前的方法将覆盖超类中的方法,编译时进行格式检查

根据对上面三个注解的声明来看,@SuppressWarnings 中定义了一个数组,这个数组表示在该注解上具体的目标是那些,如可在 SuppressWarnings 上使用的值,常用的具体如下:

  • deprecation:使用了过时的类或方法时的警告
  • unused:有未使用的变量时的警告
  • unchecked:执行了未检查的转换时的警告
  • fallthrough:当 switch 程序块直接通往下一种情况而没有 break 时的警告
  • path:在类路径、源文件路径等中有不存在的路径时的警告
  • serial:当在可序列化的类上缺少serialVersionUID 定义时的警告
  • finally :任何 finally 子句不能正常完成时的警告
  • all:关于以上所有情况的警告

下面看一个案例,具体如下:

public 

上面的代码如果使用 eclipse 等其他 IDE 时会出现两个警告,一是使用了过时的 API,二是变量 date 赋值后没有被使用过,警告截图如下:

v2-b42b0861170640bb915db180d687ec67_b.png

当然, IDE 会提示是否添加 SuppressWarnings 来取消这些警告,前文中可以看到注解 @SuppressWarnings 的声明中需要配置参数,这个参数是一个数组,数组名称是 value,可以省略这个名称, 具体如下:

//不省略
public void test2() {@SuppressWarnings(value= {"deprecation", "unused"})long date = Date.parse("2018-04-22");
}
//省略
public void test2() {@SuppressWarnings({"deprecation", "unused"})long date = Date.parse("2018-04-22");
}

来张截图说明一下使用 @SuppressWarnings 的效果,具体如下:

v2-700d5b031fee83f44ef195f9832ce397_b.png

如果只想取消一种警告可以这样写,具体如下:

//第一种

注意:如果在定义注解的配置参数名称为 value,那么可以在配置注解时可以省略 value,反之,使用其他名称,则必须采用第一种方式,要指定配置参数名称。

当然其他注解和 @SuppressWarnings 也比较类似, @Override、@Deprecated 由它们的声明可知直接使用即可,不需要指定具体目标,在其声明注解时用到了 @Documented、@Retention、@Target 等,这些用来注解其他注解的特殊注解称之为元注解,具体请看下文。

元注解

  1. @Target
  2. @Retention
  3. @Documented
  4. @Inherited

@Target

@Target 用来描述注解的使用范围,它的声明如下:

@Documented

由 @Target 声明可知使用 @Target 注解必须指定具体的 Java 成员,也就是该注解要使用到哪个位置,具体由枚举 ElementType 中定义,具体如下:

public 

@Retention

@Retention 表示在什么级别保存该注解的信息,它的声明如下:

@Documented

由 @Retention 的声明可知,使用 @Retention 时,必须指定保存celue(RetentionPolicy),具体值如下:

public 

@Documented@Inherited 都没有配置参数,是一种标记注解,@Documented 表示将该注解显示到用户文档中,@Inherited 表示该注解只有使用在类上才会有效,而且该注解会被子类继承。

类型注解

在对元注解的说明中可知从 Java8 开始新增了类型注解,如果在注解 @Target 使用这种注解,表明该注解可以在对应的任何地方使用,如在 @Target 中指定 TYPE_PARAMETER 就可在自定义类型的声明处使用该注解,如在 @Target 中指定 TYPE_USE 就可在任何类型前添加该类之间,主要是方便 Java 开发者使用类型注解和相关插件(Checker Framework)来检查来在编译期检查运行时的异常。

下面分别定义指定 TYPE_PARAMETER 和 TYPE_USE 的注解,具体如下:

//1. TYPE_PARAMETER

然后,在下面的案例中使用这两个注解,具体如下:

/**

其实注解的语法比较简单,仅仅定义注解对实际开发是没有帮助的,觉得注解只有在运行时通过反射获取注解信息才是最重要的,注解与反射相关的内容会在以后的推文中学习,到此对注解的认识就结束了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磁共振线圈分类_收藏:磁共振检查序列及临床应用总结

磁共振检查要用到序列,什么是磁共振序列(Sequence)呢? 序列,简单的讲是指具有一定带宽、一定幅度的射频脉冲与梯度脉冲的有机组合。而射频脉冲与梯度脉冲不同的组合方式构成不同的序列,不同的序列获得的图像有各自的特点。磁共振序…

css unchecked,详细介绍CSS中的伪选择器

说到伪选择器,真的让我体会到了CSS的无比强大,强大到自己貌似都不认识CSS了,有点C# 6.0中一些语法糖带给我们的震撼。。。首先我们可以在VS里面提前预览一下。可以看到,上面的伪类有很多很多,多的让我眼都快瞎了。。。…

matlab安装程序无法启动jvm_天呀!JVM居然还有2两种运行模式

概述JVM有两种运行模式Server与Client。两种模式的区别在于,Client模式启动速度较快,Server模式启动较慢;但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。这是因为Server模式启动的JVM采用的是重量级的虚拟机&…

boot idea无法识别spring_idea搭建springboot项目

Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程。它主要推崇的是消灭配置’,实现零配置。那么,如何在idea中创建一个springboot项目呢?一.在你建立的工程下创建 Module 选择Spr…

a*算法的时间复杂度_算法的时间和空间复杂度,就是这么简单

算法(Algorithm)算法是程序用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还…

筒灯智能驱动芯片作用_魅族发布Lipro智能吸顶灯与地脚灯 解决生活照明两大痛点...

1月5日,魅族高端智能家居品牌Lipro正式发布了首期六款健康照明产品以及两款配件,分别是智能吸顶灯、筒灯、灯泡、灯带、地脚灯、橱柜灯、无极调光面板和驱动电源。该系列产品全系搭载如然之光LED光源,在实用性、外观设计以及用料材质上&#…

python爬取豆瓣电影并分析_Python爬取豆瓣电影的短评数据并进行词云分析处理

前言 对于爬虫很不陌生,而爬虫最为经典的案例就是爬取豆瓣上面的电影数据了,今天小编就介绍一下如果爬取豆瓣上面电影影评,以《我不是药神》为例。 基本环境配置 版本:Python3.6 相关模块: (1)r…

云服务器开启ftp_用云服务器怎么挂机器人

用服务器​怎么挂机器人?以往,大家大多使用个人电脑来做作为挂机使用,这不仅仅会加速电脑的老化,也需要支付高昂的电费、宽带费。那么怎么解决?使用云服务器!随着技术不断进步,现在各类应用逐步…

jquery上传图片_文件上传三种方式

来源&#xff1a;python宝典 链接&#xff1a;https://mp.weixin.qq.com/s/YUplCQDfAucA_rS8E1T6WA需求上传图片在页面显示Form表单上传<html lang"en"><head><meta charset"UTF-8"><title>Titletitle>head><body>…

vue seo关键词设置_SEO关键词优化排名的几个技巧

关键词是优化网站必须要思考分析的&#xff0c;SEO网站优化过程中&#xff0c;网站的文章内容及标题优化&#xff0c;那么必须要考虑到网站的主关键词与长尾关键词了。那么&#xff0c;SEO关键词优化排名的技巧有哪些&#xff1f;下面眼前一亮就跟大家分享下SEO关键词快速排名技…

loadrunner录制事件为0_Oracle数据库性能监控|LoadRunner 中配置监控Oracle

Oracle 是目前世界上大型应用系统广泛使用的数据库&#xff0c;Oracle 数据库产品为财富排行榜上的前1000 家公司所采用&#xff0c;许多大型网站也选用了Oracle 系统。Oracle 内部结构比较复杂&#xff0c;如图8.1 所示&#xff0c;出现性能问题的可能性是比较大的。因此在性能…

闪退的解决方法_王者荣耀2.0不闪退需要什么手机?王者荣耀2.0闪退解决方法

[海峡网]国民级手游《王者荣耀2.0》刚刚上线不久&#xff0c;很多玩家就发现游戏的时候出现了闪退、卡顿严重等严重影响游戏体验的情况&#xff0c;虽然官方做出了补丁更新的动作&#xff0c;但是依旧有很多小伙伴注定与《王者荣耀2.0》无缘&#xff0c;那么&#xff0c;为了玩…

string函数_C++[06] string成员函数之删除函数erase

介绍一下删除函数erase&#xff0c;老方法&#xff0c;新建cpp文件&#xff0c;并找到string的erase成员函数&#xff0c;可以看到&#xff0c;erase有3个重载函数右键转到定义&#xff0c;可以查看erase的源码_Myt& erase(size_type _P0 0, size_type _M npos){ if …

pc端jquery左右按钮控制带缩略图的图片切换代码_Web开发实用的图片预览插件,简单零依赖——PhotoSwipe...

介绍PhotoSwipe是一个JavaScript库&#xff0c;没有依赖项。要说唯一的依赖项那就是Vanilla.js(原生js),因此你可以在你的任何Web项目中使用&#xff0c;包括主流的Vue、React、Angular以及传统jQuery的项目。PhotoSwipe可以被用到各种大中小型项目当中&#xff0c;并且PC和移动…

怎么调试内存溢出的c++代码_【C/C++】内存对齐 到底怎么回事?

1 明确几个概念代码分区&#xff1a;在使用C/C编程时&#xff0c;我们定义的变量存在于内存中&#xff0c;而内存在C语言的角度上可以分为五大区。局部变量在栈区&#xff0c;静态/全局变量在全局区&#xff0c;动态申请的变量存在于堆区&#xff0c;const修饰的变量/字符常量存…

js粘贴板为什么获取不到图片信息_图床+typora,告别markdown中关于图片的困惑

在上一篇文章中向大家介紹了几款软件&#xff0c;这篇文章主要分享一下markdown编辑器typora软件如何使用图床&#xff0c;快速的将图片加载到markdown文档中。图床&#xff1a;指存储图片的服务器&#xff0c;将图片上传到服务器上&#xff0c;转换成链接为什么使用图床&#…

计算机二级mysql是什么_计算机二级mysql考什么内容?

计算机二级mysql考什么内容&#xff1f;一、基本概念与方法&#xff11;、数据库基础知识(1)数据库相关的基本概念(2)数据库系统的特点与结构(3)数据模型2、关系数据库、关系模型3、数据库设计基础(1)数据库设计的步骤(2)关系数据库设计的方法4、MySQL概述(1)MySQL系统特性与工…

eclipse软件有时会退出弹出一串错误弹框_修复iPhone上的iOS 13软件更新失败错误...

如果由于“软件更新失败&#xff1a;下载iOS 13时发生错误”错误而无法安装刚刚发布的用于检查新的暗模式功能的iOS 13更新&#xff0c;那么我可以理解这种挫败感。但幸运的是&#xff0c;有些解决方案可以尝试修复某些用户报告的iOS 13软件更新失败错误。解决iPhone 13软件失败…

mysql第四章分页显示查询出租房屋信息_MYSQL必知必会读书笔记第四章之检索数据...

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。使用Select语句返回的数据&#xff0c;可能会发现显示的数据会与其他的地方顺序不同。出现这种情况很正常。如果没有明确排序…

vep文件如何转换mp4_如何将DVD的vob视频格式转换成mp4格式

首先简述一下&#xff0c;VOB是DVD Video OBject的缩写&#xff0c;vob文件用来保存所有MPEG-2格式的音频和视频数据&#xff0c;这些数据不仅包含影片本身&#xff0c;而且还有供菜单和按钮用的画面以及多种字幕的子画面流。如何把视频vob格式转换成任意格式视频文件呢&#x…