【Java】注解(Annotation)

1.注解

  • 就是lava代码里的特殊标记,比如:@Override、@Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序。
  • 注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处。

如下@Override所示:

2.自定义注解

就是自己定义注解

特殊属性名: value
如果注解中只有一个value属性,使用注解时,value名称可以不写!!

自定义注解的基本使用:

定义自定义注解:

public @interface Mytest {String aaa();boolean bbb() default true;String[] ccc();
}

使用上面的自定义注解: 

@Mytest(aaa="aaa",bbb = false,ccc={"a","b"})
public class Annotation_test {
}

3.注解的原理

  • 注解本质是一个接口,Java中所有注解都是继承了Annotation接口的
  • @注解(其实就是一个实现类对象,实现了该注解以及Annotation接口

4.元注解

指的是:修饰注解的注解 

有以下两个常用元注解:

元注解的基本使用:

@Target({ElementType.METHOD,ElementType.TYPE})//当前被修饰的注解只能在类,接口,成员方法中使用
@Retention(RetentionPolicy.RUNTIME)//控制下面的注解一直保留到运行时
public @interface Mytest {
}

5.什么是注解的解析?

  • 就是判断类上、方法上、成员变量上是否存在注解,并把注解里的内容给解析出来。

如何解析注解?

  • 指导思想:要解析谁上面的注解,就应该先拿到谁
  • 比如要解析类上面的注解,则应该先获取该类的Class对象,再通过Class对象解析其上面的注解
  • 比如要解析成员方法上的注解,则应该获取到该成员方法的Method对象,再通过Method对象解析其上面的注解
  • Class、Method、Field,Constructor、都实现了AnnotatedElement接口,它们都拥有解析注解的能力

6.解析注解的案例

解析注解的案例,具体需求如下:

1.定义注解MyTest4,要求如

  • 包含属性: String value()
  • 包含属性: double aaa(),默认值为 100
  • 包含属性: Stringl] bbb()
  • 限制注解使用的位置:类和成员方法上
  • 指定注解的有效范围:一直到运行时

2.定义一个类叫:Demo,在类中定义一个test1方法,并在该类和其方法上使用MyTest4注解

3.定义AnnotationTest3测试类,解析Demo类中的全部注解。

定义注解:

@Target({ElementType.METHOD,ElementType.TYPE})//当前被修饰的注解只能在类,接口,成员方法中使用
@Retention(RetentionPolicy.RUNTIME)//控制下面的注解一直保留到运行时
public @interface Mytest4 {String value();double aaa() default 100;String[] bbb();
}

定义类Demo

@Mytest4(value = "value",aaa = 99.5,bbb={"a","b","c"})
public class Demo {@Mytest4(value = "value2",aaa = 99.9,bbb={"a","b","c"})public void test(){}
}

定义AnnotationTest3测试类

public class AnnotationTest3 {public void parseClass(){//1.先得到Class对象Class c= Demo.class;//2.解析类上的注解//判断类上是否包含某个注解if(c.isAnnotationPresent(Mytest4.class)){Mytest4 mytest4=(Mytest4) c.getDeclaredAnnotation(Mytest4.class);System.out.println(mytest4.value());System.out.println(mytest4.aaa());System.out.println(Arrays.toString(mytest4.bbb()));}}
}

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

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

相关文章

长虹智能电视使用123

1、开机 在接通电源的情况下,长虹智能电视开机有两种方式。 方式1: 按电视右下角开机按钮 方式2: 按电视遥控器开机按钮 长虹智能电视开机后会进入其操作系统(安卓)。 屏幕左右双箭头图表,手指点击会…

KubeSphere v3.4.0 部署K8S Docker + Prometheus + grafana

KubeSphere v3.4.0 部署K8S 1、整体思路2、修改linux主机名3、 离线安装3.1 问题列表3.2 执行命令成功列表 1、整体思路 将KubeSphere v3.4.0 安装包传输到其中一台机器修改Linux主机名(选取3台,修改为master01、master02、master03)安装官方…

写一下关于部署项目到服务器的心得(以及遇到的难处)

首先要买个服务器(本人的是以下这个) 这里我买的是宝塔面板的,没有宝塔面板的也可以自行安装 点击登录会去到以下页面 在这个界面依次执行下面命令会看到账号和密码和宝塔面板内外网地址 sudo -s bt 14点击地址就可以跳转宝塔对应的内外网页面 然后使用上述命令提供的账号密…

《网络协议》04. 应用层(DNS DHCP HTTP)

title: 《网络协议》04. 应用层(DNS & DHCP & HTTP) date: 2022-09-05 14:28:22 updated: 2023-11-12 06:55:52 categories: 学习记录:网络协议 excerpt: 应用层、DNS、DHCP、HTTP(URI & URL,ABNF&#xf…

CVE-2023-25194 Kafka JNDI 注入分析

Apache Kafka Clients Jndi Injection 漏洞描述 Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。Kafka Connect 是一种用于在 kafka 和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于 SASL JAAS 配置和 SASL …

2023年第十六届山东省职业院校技能大赛高职组“信息安全管理与评估”赛项规程

第十六届山东省职业院校技能大赛 高职组“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职组 赛项归属:电子与信息大类 二…

虹科示波器 | 汽车免拆检测 | 2017款路虎发现车行驶中发动机抖动且加速无力

一、故障现象 一辆2017款路虎发现车,搭载3.0L发动机,累计行驶里程约为3.8万km。车主反映,车辆在行驶过程中突然出现发动机抖动且加速无力的现象,于是请求拖车救援。 二、故障诊断 拖车到店后首先试车,发动机怠速轻微抖…

汇编与反汇编

程序处理的4个步骤 我们的第一个LED程序涉及两个文件:start.S、main.c,它们的处理过程如下: 对于汇编程序,经过汇编之后,转换成目标文件(里面包含机器码)。对于C程序,经过预处理之…

(二)正点原子I.MX6ULL u-boot移植

一、概述 这里使用的是NXP官方2022.04发布的uboot,移植到正点原子阿尔法开发板(v2.1) u-boot下载:gitgithub.com:nxp-imx/uboot-imx.git 移植是基于NXP的mx6ull_14x14_evk 二、编译NXP官方uboot 进入NXP的u-boot目录 先在Makefile…

【算法专题】双指针—三数之和

力扣题目链接:三数之和 一、题目解析 二、算法原理 解法一:排序暴力枚举利用set去重 代码就不写了,你们可以试着写一下 解法二:排序双指针 这题和上一篇文章的两数字和方法类似 排序固定一个数a在这个数的后面区间&#xff0…

软件安全测试怎么做?如何确保软件授权安全

在数字化不断演进的今天,软件安全测试变得至关重要。它验证了软件是否容易受到网络攻击,并检验恶意或意外输入对操作的影响。安全测试的目标是保障系统和信息的安全性和可靠性,确保它们不接受未授权的输入。 一、安全测试准备 开发者必须认识…

AI系统ChatGPT源码+详细搭建部署教程+AI绘画系统+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…