java 注释 过时_Java 注解

前言

为什么需要学习注解?

1.能够灵活地使用框架提供的注解,最后能够读懂框架的源码

2.能够配合反射将代码书写更加的灵活,更加易于维护易于扩展,Properties配置,XML配置,注解配置[Java配置]

3.极大程度地简化了代码,提高了代码的可读性

注解的概述

Java提供了一种源程序中元素和任何信息或者元数据相关联的一种方法或者渠道

源程序中元素: Java文件 构造方法、成员变量、成员方法...

信息: 就是一些配置数据 【也可以理解为是注释】

元数据: 就是元注解,对注解进行注解,后面学习

关联: 元素和注释绑定成为注解

简单来说: 就是相当于一些类似于注释的信息 和 源程序中的元素 绑定的一种技术,这种技术叫做注解

这种手段可以通过反射获取到元素对象,在获取到这个元素上面绑定的注解,通过绑定的注解获取里面配置信息,

从而达到能够在程序运行阶段通过这些信息动态地改变程序的运行逻辑

常见注解

JDK中常见的注解

@Override: 表示注解修饰的方法必须满足重写的规则

@Deprecated: 表示成员过时,编译器可以在程序运行的时候获取到该注解

@SupressWarnings: 表示忽略编译器的警告

@FunctionalInterface: 表示该接口是一个函数式接口,并且可以作为Lambda表达式参数传入

注解分类

注解的分类

按照运行的机制分类:

源码注解: 注解只在源码中有效,当编译生成字节码文件的时候,注解就不存在了,其实就是注释 APT

编译时注解: 注解在源码和编译时期有效,在jvm运行的时候就不存在了

运行时注解: 注解在源码和编译有效,同时在程序的执行过程也存在 (反射获取运行时注解,从而获取到注解的配置信息动态改变程序的逻辑)

元注解: 对注解进行注解的注解

按照来源分类:

JDK中自带的注解: @Override,@Deprecated

第三方注解: @Table,@Column,@Component,@Service,@Bean

自定义注解: 自己定义注解自己使用在自己的代码中

元注解: 对注解进行注解的注解

自定义注解并且使用

四种使用注解的方式:

格式一: @注解的名称(属性名1=属性值1,属性名2=属性值2,属性名3=属性值3,...属性名n=属性值n)

注意: 如果有两个以上的属性,有多少个属性就必须给多少个属性赋值

格式二: 适用于注解只有一个成员

@注解的名称(属性值)

格式三: 适用于成员是数组的情况

@注解的名称({属性值1,属性值2,属性值3,...属性值n})

格式四: 使用标记注解

@注解的名称

使用反射来注解

使用反射解析注解:

1.使用反射解析类或者接口或者枚举上面的注解,必须先要获取到字节码文件对象

2.解析除了类上的注解外,必须先获取到元素对象

3.获取注解之前一定要做存在性判断

为什么? 因为如果是源码或者编译时注解,那么反射是在运行时获取,注解在运行时已经不存在就获取不到

通过反射获取注解元素的相关方法:

A getAnnotation(Class annotationClass)

Annotation[] getAnnotations()

Annotation[] getDeclaredAnnotations()

boolean isAnnotationPresent(Class extends Annotation> annotationClass)

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

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

相关文章

python模拟登录淘宝直通车_Python实现的淘宝直通车数据抓取(1)

最近帮一个朋友做一个抓取淘宝直通车数据的小项目,感觉ython比较适合写爬虫程序,决定使用Python来做程序。首先是登陆程序,因为淘宝的登陆校验很复杂,所以不能直接使用命令行的形式输入账号密码。查阅资料后,发现可以使…

java的serversocket_Java ServerSocket 实现聊天室功能(简易版)

大体实现功能可以选择房间,可以与房间中的用户进行实时的交流说在前面的话:serverSocket.accept() 会形成阻塞scanner.hasNextLine() 和 scanner.nextLine() 也会形成阻塞windows 下需要打开telnet服务。请自行百度实现思路:用户连接上服务器后选择房间号&#xff0…

python爬虫验证码的识别_Python爬虫识别验证码

Python爬虫识别验证码安装tesserocrpip3 install tesserocr pillow识别测试将验证码图片放到项目根目录下,用tesserocr库识别该验证码,代码如下所示:import localelocale.setlocale(locale.LC_ALL, C)import tesserocrfrom PIL import Imagei…

python对象属性赋值_关于python对象 中dict属性赋值的疑问

下面这段代码 很奇怪把两个对象放在一个 list中然后循环操作两个对象 中 一个dict key的数值但是循环操作输出的时候发现两个对象的 值会叠加#!/usr/bin/env pythonclass test:base {score : 100}def setBase(self, score):self.base[score] scoredef addScore(self):self.se…

java mysql jsp分页代码_JSP实现数据库分页显示源代码例

JSP实现数据库分页显示源代码例2018-11-25分页显示数据库信息分页显示数据库记录用户名性别电话E-Mailtry{//驱动程序名String driverName"sun.jdbc.odbc.JdbcOdbcDriver";//连接字符串String url"jdbc:odbc:userdata";//加载驱动程序Class.forName(driver…

java解压zip异常_java解压zip文件示例

若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能,因为jdk提供的zip只能按UTF-8格式处理,而Windows系统中文件名是以GBK方式编码的,所以如果是解压一个包含中文文件名的zip包,会报非法参数异常,所以要…

ensp删除所有命令_HCIA学习笔记——eNSP配置NAT技术

今天用华为的eNSP做了关于NAT的实验,我把它发了出来,有需要的小伙伴可以收藏一下。分别配置了静态的NAT,NAT Outbound配置,Easy IP配置,NAT server配置。接口配置如图所示。在网关路由器上配置访问外网的默认路由。配置…

java怎么设置背景_如何在Java中设置背景图片?

小编典典根据应用程序或小程序是使用AWT还是Swing,答案会略有不同。(基本上,以J诸如JApplet和JFrame为开头的类是Swing和Appletand Frame是AWT。)无论哪种情况,基本步骤都是:将图像绘制或加载到Image对象中。在要绘制背景的绘画事…

python调用selenium的get_Python – selenium webdriver在循环中停留在.get()

我有一个Python代码片段,它使用Selenium Webdriver来循环一些历史性的棒球赔率.代码的第一部分旨在从调度表(包含大约57个需要循环的页面)中获取所有单独的游戏URL,并将它们存储在列表中.我第一次测试它它工作得很好 – 现在,无论出于何种原因,driver.get()函数似乎无法正常工作…

java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?

这个问题关于如何处理Java for-each循环中的元素。我有一个哈希表,它是一个LinkedLists数组。 LinkedList节点的数据部分包含TableEntry,其中K和V是键和值类型。我写了一个for循环来查看LinkedList中的每个TableEntry,检查一个键是否等于Tabl…

python读取dicom文件的包_python 读取DICOM头文件的实例

用dicompyler软件打开dicom图像,头文件如图所示:当然也可以直接读取:ds dicom.read_file(H:Datadata216622.16.840.1.113662.2.0.105002416.1489146183.701CTCT#0#21662#E7AB693D.dcm)print ds>>(0008, 0008) Image Type CS: [ORIGINA…

java程序员用代码写的情书_用代码写的三行情诗,你懂得程序员的浪漫吗?

原标题:用代码写的三行情诗,你懂得程序员的浪漫吗?在一般人眼里,程序员是一群古板,技术宅,不懂得浪漫的屌丝,但其实这些大神们浪漫起来也是相当可以的!下面让我们来看一下程序员们用…

对比四大企业级linux版本_Linux家族族谱

大体上来讲,Linux分为两个生态体系,红帽和debian。商业版本以Redhat为代表,开源社区版本则以debian为代表。红帽家族redhat :红帽自家服务器centos :基于红帽重新封装的去掉版权信息的免费版本fedora :基于…

java编写静态工具类_Java编程中静态内部类与同步类的写法示例

java静态内部类将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致。不过其细节方面仍然有很大的不同。具体来说,主要有如下几个地方要引起各位程序开发人员的注意。(一)一般情况下,如果一个内部…

python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例

本文实例讲述了Python实现获取nginx服务器ip及流量统计信息功能。分享给大家供大家参考,具体如下:#!/usr/bin/python#codingutf8log_file "/usr/local/nginx/logs/access.log"with open(log_file) as f:contexts f.readlines()# define ip d…

java实验1机动车实验目的_《Java程序设计》实验指导书.doc

《Java程序设计》实验指导书实验一、熟悉JDK环境及主要命令一、实验目的1) 熟悉JDK的环境配置2) 掌握JDK的命令3) 掌握Java Application程序的开发过程,并编写一个Java Application程序二、实验内容1.按照上课所学知识,为自己的机器配置环境变…

python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

很多selenium学习者被浏览器弹出的文件上传、下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题。上传上传弹框文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我们需要:首先,要区分出…

mysql vim 命令_Vim基本命令必知必会

光标移动定位方式hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头0 → 数字零,到行首^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)$ →…

python执行语句转换成str_python3.x,_python3.4.3如何转换str字符串?,python3.x - phpStudy...

python3.4.3如何转换str字符串?#codingutf8import pymssqlclass MSSQL:def __init__(self,host,user,pwd,db):self.host hostself.user userself.pwd pwdself.db dbdef __getConnect(self):"""得到连接信息返回: conn.cursor()"…

java中strictfp么意思_什么时候应该在java中使用“strictfp”关键字?

Strictfp确保您从每个平台上的浮点计算获得完全相同的结果。如果不使用strictfp,JVM实现可以在可用的地方使用额外的精度。Within an FP-strict expression, allintermediate values must be elementsof the float value set or the doublevalue set, implying that…