JavaWeb——2.注解

这篇具有很好参考价值的文章主要介绍了JavaWeb——2.注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章我们来讲一下Java中的注解

其实这部分内容算是Javaweb的补充内容,其中还包括Junit测试和反射的相关内容。 Junit测试是一个比较简单的内容,这里就不写了;而反射的相关内容可以看java基础专栏,那里面有详细的叙述。

目录

1.注解概述

2.jdk里面已经定义的注解

2.1 @Override注解

2.2 @Deprecated注解

2.3 @SuppressWarnings(参数)

3.自定义注解

4.在程序中解析注解

5.具体案例


1.注解概述

首先,我们来对注解进行一个全面的认识

注解概念:用来说明程序的,是给计算机看的

格式:@+注解名称

解释:我们知道java里面有注释,注释的概念是:用文字描述程序,给程序员看的;我们类比注释,就给出了注解的概念。唯一不同的是注解是给计算机看的

注解的分类:

  1. 编译检查:通过代码里面标识的注解,让编译器可以实现基本的编译检查,例@Override
  2. 编写文档:通过代码里面标识的注解,来生成文档(生成doc文档,也就是api文档,生成类的文档的命令:javadoc 类名)
  3. 代码分析:通过代码里标识的注解,对代码进行分析(使用反射)

说明:编译检查,很简单,就是程序在编译的时候对代码进行检查,看看它是否符合语法格式,典型的就是对方法的重写时用的注解@Override;编写文档,也很容易理解,就是我们给程序加上注解,然后如果我们要生成api文档,那么就会生成加了注解的部分;代码分析这里先不阐述

关于注解我们要学习的内容:

  1. jdk里面定义的注解
  2. 自定义注解
  3. 在程序中使用(解析)注解

2.jdk里面已经定义的注解

首先,我们先来了解一下jdk里面已经定义了的注解。主要了解以下三个:

  1. @Override 检测被标记的方法是否是基础父类(接口)的
  2. @Deprecated 该注解标识的内容表示已过时
  3. @SuppressWarnings(参数) 用来压制警告的,其中的参数一般传递all,表示压制所有警告

2.1 @Override注解

这个注解就不过多赘述了,我们已经用了很多次了

直接看一下代码吧

JavaWeb——2.注解

很简单,不多讲

2.2 @Deprecated注解

这个注解是用来表示标识的内容已经过时了

注意:是可以用,但是已经过时了。就比如一个程序有了一个新功能,旧的功能过时了,所以我们要对旧的功能进行表示,但是因为还有人会用旧的功能,所以旧的功能还是可以用的

看下代码:

JavaWeb——2.注解

第16行的注解表示方法show1()过时了,所以在第28行输入的时候,idea显示的show1()上面划了条横线,但是注意,show1()方法还是可以用的

2.3 @SuppressWarnings(参数)

@SuppressWarnings(参数)注解是用来压制警告的

具体的看一下代码:

JavaWeb——2.注解

这些标黄的位置就是警告,不是错误,不影响程序运行

然后我们加上注解看一下:

JavaWeb——2.注解 如图所示,警告就没有了

里面的参数我们一般传入的是all,表示压制所有的警告

对于这个注解,我们一般是直接标识在类上的,这样就可以压制整个类的警告了

JavaWeb——2.注解 如图所示,我们这整个类都没有警告了

3.自定义注解

下面,我们来尝试一下自定义注解

我们来看一下java中注解的格式:

JavaWeb——2.注解

它大体上是分两部分组成的。第一部分:元注解,就是49和50两行;第二部分:注解定义,就是第51行

所以注解格式如下:

元注解
public @interface MyAnno {

}

我们仿照它也来定义一个注解:

 JavaWeb——2.注解

 这里再说明一点内容,我们定义了一个注解,然后进行编译,然后在用javap命令反编译,就能看到注解的本质

注解的本质:注解本质上是一个接口,该接口默认继承Annotation接口

接口反编译出来的内容:public interface MyAnno extends java.lang.annotation.Annotation{}

所以说,注解本质上是一个接口,接口里面能写的内容(常量、抽象方法)注解里面都可以写

但是有所要求:

  1. 属性的返回值类型,只能包括:基本数据类型、String、枚举、注解、以上类型的数组,只能包括这五大类
  2. 定义了属性,在使用时要给属性赋值,赋值格式为 属性名=值;还可以使用default关键字给属性赋默认值
  3. 如果只有一个属性需要赋值,并且属性名为value,那么可以直接写值,不用写value

下面来看一个自定义的注解:

JavaWeb——2.注解

这是自定义的注解,里面写了内容

下面看一下这个注解的使用:

JavaWeb——2.注解 很简单key-value的形式

下面再来讲一下元注解:

元注解:用于描述注解的注解,是jdk已经定义好的
需要掌握的元注解:

  1. @Target:用于描述注解能够作用的位置,三个取值:TYPE:只作用于类上;METHOD:只作用于方法上;FIELD:只作用与成员变量上
  2. @Retention:描述注解被保留的阶段 @Retention(RetentionPolicy.RUNTIME),表示当前被描述的注解会保留到class字节码文件中,并被jvm读取到;我们自己写的注解一般是选RUNTIME
  3. @Document:描述注解是否被抽取到api文档中
  4. @Inherited:描述被该注解描述的注解注释的类的子类会自动继承这个注解

下面来看一下具体的实例:

JavaWeb——2.注解 我们写自定义的注解时,一般只用前两个注解,后面两个一般不用

注解的定义就是这么多的内容

4.在程序中解析注解

下面我们通过具体的实例来看下注解的在程序中的解析

JavaWeb——2.注解

如图所示,这是我们自定义的一个注解

JavaWeb——2.注解 这个是我们在程序中使用我们自定义的注解

JavaWeb——2.注解

 这个就是运行的结果

我们在程序中解析注解,实质上就是在程序中获取注解里面的内容,它包含以下三部分:

  1. 获取注解定义的位置的字节码文件
  2. 获取指定的注解
  3. 调用注解中的抽象方法来获取配置的属性值

 这在上面的程序中也是对应上的,运行方法啥的运用的是反射的技术

5.具体案例

情景:你写了一个计算器,能够进行四则运行,现在要求你写一个测试框架,来测试你的计算器是否可以正确运算,如果有错,请返回文件指出错误

代码如下:

JavaWeb——2.注解

 这是计算器类

JavaWeb——2.注解

这是我们写的注解

JavaWeb——2.注解 这是我们的测试框架

JavaWeb——2.注解

这是运行结果

最后,我们小结一下

我们以后是要会使用注解,而不是自定义注解来使用。注解给谁用?注解给计算机用,给解析程序用(这个解析程序就是类似于我们的TestCheck类),注解是给这二者用的。并且注解不是我们程序的一部分,可以将注解理解为一个标签,它不是程序的一部分。 

 文章来源地址https://www.toymoban.com/news/detail-511114.html

到了这里,关于JavaWeb——2.注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 17.JavaWeb-注解

            注解(Annotation)是一种元数据的表示方式,用于给代码添加额外的信息、配置或指示。注解以特定的语法规则或标记标识,并可以应用于类、方法、字段、参数等程序元素上。 1.1.1 提供额外的元数据信息         注解可以用于提供额外的信息,如作者、版本

    2024年02月15日
    浏览(30)
  • 最近台风肆虐,让我们用Python获取天气数据,分析一下台风到底要去哪!

    最近台风肆虐,已进入我国24小时警戒线!台风“卡努”到底要去哪儿? 作为一个Python程序员,虽然我帮不上忙,但是时时关注一下还是可以的,顺便祈祷一下台风往东边某个小日子过得不错的小岛吹。 于是我花了一分钟,用Python写了一个获取天气数据的代码,然后进行数据

    2024年02月14日
    浏览(42)
  • 【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,结构体的基本使用和常见错误在上一篇详细讲解过了,不知道大家都学会了没有。    ⛳️ 今天给大家来个硬菜,教点高

    2024年02月15日
    浏览(46)
  • JavaWeb入门看这一篇文章就够了

    第1节 什么是web 第2节 什么是JavaWeb   第1节 JavaWeb服务器是什么 第2节 常见的JavaWeb服务器介绍 Tomcat当前最流行的web容器(免费) jetty(免费) Weblogic(收费) 第3节 Tomcat服务器 tomcat服务器介绍 tomcat的目录结构   tomcat的常用命令 tomcat的用户管理 tomcat的服务配置管理 在一台服务器上配

    2024年02月03日
    浏览(61)
  • JavaWeb_LeadNews_Day4-阿里云内容安全, 雪花算法, app文章保存, 自媒体文章审核

    依赖 实现 总结 工具类太复杂, 云盾内容安全也没开通(要企业认证), 看看测试好了 测试图片审核会报错, 可能是没开通 背景 技术选型 方案 优势 劣势 redis (INCR)生成一个全局连续递增的数字类型主键 增加了一个外部组件的依赖, Redis不可以, 则整个数据库将无法再插入 UUID 全局

    2024年02月15日
    浏览(39)
  • JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数

    Kafka Stream: 提供了对存储与Kafka内的数据进行流式处理和分析的功能 特点: Kafka Stream提供了一个非常简单而轻量的Library, 它可以非常方便地嵌入任意Java应用中, 也可以任意方式打包和部署 除了Kafka外, 无任何外部依赖 通过可容错地state, store实现高效地状态操作(如windowed join和

    2024年02月09日
    浏览(33)
  • java注解,一篇文章就够了

    Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰 包、类、接口、字段、方法参数、局部变量 等。 常见的注解如:@Override、@Deprecated和@SuppressWarnings 2.1 使用步

    2024年02月03日
    浏览(48)
  • @Reference注解,看这一篇文章就够了。

            @Reference是Dubbo框架中的注解,用于注入远程服务的引用。         在Dubbo框架中,服务提供者和服务消费者是通过RPC方式进行通信的。服务消费者需要通过Dubbo框架来获取服务提供者的实例,通过这个实例来调用服务提供者的方法。当服务消费者在代码中需要调

    2023年04月25日
    浏览(93)
  • 学java注解,看这一篇文章就够了

    Annotation(注解)是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰 包、类、接口、字段、方法参数、局部变量 等。 常见的注解如:@Override、@Deprecated和@SuppressWarnings 2.1 使用步

    2024年02月06日
    浏览(41)
  • Java中的全局变量和局部变量(看这篇就够了)

    在Java中,全局变量和局部变量是两种不同作用域的变量。 全局变量(成员变量) : 在类中定义的变量称为成员变量,也叫全局变量。它们的作用域是整个类,在类的任何地方都可以被访问。 如果没有显式地初始化,它们会有默认值。 全局变量可以是基本数据类型(如int、

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包