@Deprecated 注解 (@Documented 、@Retention、@Target)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

// 在看 Unsafe 类源码时看到一个注解:@Deprecated,似曾相识...

@Deprecated 

用在类或者方法上,表示对应代码不推荐使用、已经过时。

通常是因为它是危险的,或者是因为存在更好的替代方案。编译器在非弃用代码中使用或重写弃用的程序元素时发出警告。

调用时可能会出现删除线。

补充:

@Documented 

有此注解的内容将由javadoc和类似工具记录。如果用文档对类型声明进行了注释,则其注释将成为注释元素的公共API的一部分。

@Retention

@Retention 是一个元注解,即注解上的注解。
它只有一个 RetentionPolicy 类型的属性,RetentionPolicy是一个枚举,共有3个值:SOURCE、CLASS、RUNTIME。

这 3 个值决定了被@Retention所注解的注解(即@Deprecated )被保留的方式。

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。
那怎么来选择合适的注解生命周期呢?
首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解
如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;
如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。

以上 9 行出自:https://www.cnblogs.com/liufei1983/p/9987084.html

 

@Target

限制注解可以应用于哪种Java元素类型。只有一个枚举数组类型的属性:value。

用法如:

@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
数组中的值为注解的作用目标。在此,即:CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE。
目标范围枚举值有:接口、类、枚举、注解、字段、枚举的常量、方法、方法参数、构造函数、局部变量、包等。
public enum ElementType {/** Class, interface (including annotation type), or enum declaration */TYPE,/** Field declaration (includes enum constants) */FIELD,/** Method declaration */METHOD,/** Formal parameter declaration */PARAMETER,/** Constructor declaration */CONSTRUCTOR,/** Local variable declaration */LOCAL_VARIABLE,/** Annotation type declaration */ANNOTATION_TYPE,/** Package declaration */PACKAGE,/*** Type parameter declaration** @since 1.8*/TYPE_PARAMETER,/*** Use of a type** @since 1.8*/TYPE_USE
}

 

参考:

 https://blog.csdn.net/fengcai0123/article/details/90544338

https://www.cnblogs.com/liufei1983/p/9987084.html

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

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

相关文章

Java魔法类:Unsafe应用解析

Unsafe是位于sun.misc包下的一个类&#xff0c;主要提供一些用于执行低级别、不安全操作的方法&#xff0c;如直接访问系统内存资源、自主管理内存资源等&#xff0c;这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言…

AMD迎接变革:加速OpenCL的未来

摘要&#xff1a;AMD在北京中关村皇冠假日酒店举办了以"迎接变革&#xff1a;加速进入OpenCL 的未来"为主题的技术培训。AMD Firepro显卡资深产品经理JC、OpenCL资深讲师陆教授、谢博士与大家探讨OpenCL技术将如何引领变革、铸造计算新纪元。 4月11日&#xff0c;AM…

让AMD在中国发声 APU14技术创新大会首次在华召开

今日&#xff0c;AMD一年一度的开发者峰会“APU2014”在北京拉开帷幕&#xff0c;这也是AMD首次在美国之外的城市举办该活动。AMD全球副总裁、大中华区董事总经理潘晓明表示&#xff0c;大中华区是AMD重要的战略区域&#xff0c;AMD希望通过本次活动在中国制造巨大的声音&#…

Python已成美国顶尖高校中最受欢迎的入门编程语言

在最近的一份调查中显示&#xff0c;美国top高校中&#xff0c;Python已经成为教授计算机科学入门课程方面最受欢迎的语言。其中Top10 CS系中有8所使用Python&#xff0c;Top39 CS系中有24所&#xff0c;在入门课程中教授Python&#xff0c;可见其实用性的认可度很高。在我写下…

A饭福利,AMD Mantle API获众多游戏开发商青睐!

摘要&#xff1a;Videocardz整理了一份2014年—2015年支持AMD Mantle游戏列表&#xff0c;并公布了游戏开发商及游戏引擎的名称。已发布且支持Mantle的游戏主要有《战地4》、《神偷4》、《植物大战僵尸&#xff1a;花园战争》以及《狙击精英3》这四款。 现如今&#xff0c;越来…

linux 安装 maven 、解决:bash: mvn: command not found

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、安装 wget 命令: yum -y install wget 2、下载maven安装包 wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/a…

软件工程师必学的9件事

本文是html5tricks原创翻译&#xff0c;转载请看清文末的转载要求&#xff0c;谢谢合作&#xff01; 三年前&#xff0c;我还在巴塞罗那的神经科学实验室工作&#xff0c;忙着研究脑电波、教授心理学上的认知系统课程。而今天&#xff0c;我以设计和写软件为生。 你或许会满头…

图解 Java 常用数据结构

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与…

编程语言 IDE 对比

IDE是集成开发环境的英文缩写&#xff0c;所谓集成开发环境&#xff0c;就是将你在开发过程中所需要的工具或功能集成到了一起&#xff0c;比如代码编写、分析、编译、调试等功能&#xff0c;从而最大化地提高开发者的工作效率。每种编程语言都有一些特定的IDE&#xff0c;本文…

程序员为什么那么难升职

一个有趣的现象是老程序员很难升职&#xff0c;如果你因为3K工资太低而要辞掉工作&#xff0c;你的上司宁可去外面找一个5K工资的新人&#xff0c;也不会来挽留你。那么程序员为什么那么难升职&#xff0c;这里总结了几点。你上司的问题你晋升困难&#xff0c;最大的主观原因在…

Docker 安装 Redis (Redis 配置)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 获取 redis 镜像 docker pull redis 不加版本号默认获取最新版本&#xff0c;也可以使用 docker search redis 查看镜像来源 查看本地镜像…

百度首席科学家 Andrew Ng谈深度学习的挑战和未来

摘要&#xff1a;7月7日上午&#xff0c;百度首席科学家Andrew Ng应邀做客中国科学院自动化研究所并做了《Deep Learning&#xff1a;Overview and trends》的学术报告。 【编者按】人工智能被认为是下一个互联网大事件&#xff0c;当下&#xff0c;谷歌、微软、百度等知名的高…

Linux 安装 jdk ( 两种方式 )

安装jdk有两种方法&#xff1a;手动安装 yum安装。 方式一&#xff1a; yum安装 1、查询要安装jdk的版本, 命令&#xff1a;yum -y list java* 2、安装jdk1.8 yum install -y java-1.8.0-openjdk.x86_64 3、查询jdk版本&#xff1a;java -version 这样就安装成功了。默认…

Linkedln技术高管Jay Kreps:Lambda架构剖析

摘要&#xff1a;Jay Kreps是Linkedln的一名在线数据架构技术高管&#xff0c;在日常工作中&#xff0c;Jay Kreps经常被问及有关Lambda架构的问题&#xff0c;为此他结合实际经验和个人体会&#xff0c;针对Lambda架构进行深度剖析&#xff0c;分析了它的优缺点以及采用的替代…

JWT ( JSON Web Token ) 入门教程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后&#x…

注解 @Target 用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Target&#xff1a; Target说明了Annotation所修饰的对象范围&#xff1a;Annotation可被用于 packages、types&#xff08;类、接口、枚…

java 并发包之 LongAdder 源码分析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 LongAdder是java8中新增的原子类&#xff0c;在多线程环境中&#xff0c;它比AtomicLong性能要高出不少&#xff0c;特别是写多的场景。…

解决:Command line is too long. In order to reduce its length classpath file can be used.

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 原本可以正常运行的项目&#xff0c;突然出现这个错&#xff1a; Command line is too long. In order to reduce its length class…

性能提升利器之固态硬盘和序列化漫谈

摘要&#xff1a;假设我们已经构建了下一个杀手级应用&#xff0c;而且变得越来越受欢迎&#xff0c;突破负载极限&#xff0c;以我们目前的增长的速度&#xff0c;需要在3个月内将需要将性能提升10倍。我们该怎么做&#xff1f; 【编者按】当面对一个性能扩展问题时&#xff…

查看本机IP的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 打开网络和共享中心 2.更改适配器设置 3. 右键选择 状态 4.选择详情 5.找到IP