当前位置: 首页 > news >正文

Java的注解(Annotation)

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。例如JUnit单元测试中的@Test方法,可以使得方法直接运行。

JUnit单元测试@Test

单元测试是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法。单元测试就是针对Java方法的测试,进而检查方法的正确性。目前测试方法在只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响。而且无法得到测试的结果报告,需要程序员自己去观察测试是否成功。也无法实现自动化测试。

JUnit是使用Java语言实现的开源单元测试框架。

使用test需要 1.导入JUnit包

随便写一个类:

2.测试方法必须是公共的无参数无返回值的非静态方法。3.在测试方法上使用@Test注解。4.在测试方法中完成被测试方法的预期正确性测试。5.选中测试方法,运行

Junit常用注解

@Test

测试方法

@Before

用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。

@After

用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。

@BeforeClass

用来静态修饰方法,该方法会在所有测试方法之前只执行一次。

@AfterClass

用来静态修饰方法,该方法会在所有测试方法之后只执行一次。

注解-自定义注解

注解就是对Java中类、方法、成员变量做标记,然后进行特殊处理。自定义注解就是自己做一个注解来使用。

格式: public @interface 注解名称 { public 属性类型 属性名() default 默认值 ;}

两个元注解,用于注解 注解 的:

@Target: 约束自定义注解只能在哪些地方使用,

Target中可使用的值定义在ElementType枚举类中,常用值如下 :

TYPE,类,接口

FIELD, 成员变量

METHOD, 成员方法

PARAMETER, 方法参数

CONSTRUCTOR, 构造器

LOCAL_VARIABLE, 局部变量

@Retention:申明注解的生命周期

常用值如下 :

SOURCE: 注解只作用在源码阶段,生成的字节码文件中不存在

CLASS: 注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值.

RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)

自定义注解-1格式

//注解
public @interface myAnnotation1 {String name();String[] names();
}
//使用
@myAnnotation1(name = "JavaE",names = {"123","456"})
public class AnnotationD1 {@myAnnotation1(name = "hello",names = {"123","456"})public static void main(String[] args) {}
}

注解解析

注解的操作中经常需要进行解析,注解的解析就是判断是否存在注解。

与注解解析相关的接口:

Annotation: 注解的顶级接口,注解都是Annotation类型的对象

AnnotatedElement:该接口定义了与注解解析相关的解析方法

常用方法:

Annotation[] getDeclaredAnnotations()

获得当前对象上使用的所有注解,返回注解数组。

T getDeclaredAnnotation(Class<T> annotationClass)

根据注解类型获得对应注解对象

boolean isAnnotationPresent(Class<Annotation> annotationClass)

判断当前对象是否使用了指定的注解,如果使用了则返回true,否则false

自定义注解-2 模拟JUnit

1.定义一个自定义注解MyTest,只能注解方法,存活范围是一直都在(元注解)。2.定义若干个方法,只要有@MyTest注解的方法就能在启动时被触发执行,没有这个注解的方法不能执行。

@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest {
}
public class Demo1 {@MyTestpublic void test1(){System.out.println("1");}public void test2(){System.out.println("2");}@MyTestpublic void test3(){System.out.println("3");}public static void main(String[] args) throws Exception{Demo1 d1=new Demo1();Class c=Demo1.class;//反射第一步,获取类对象//获取全部方法Method[] methods=c.getDeclaredMethods();for (Method method : methods) {//如果方法存在xx注解if(method.isAnnotationPresent(MyTest.class)){method.invoke(d1);}}}
}

相关文章:

Java的注解(Annotation)

Java 注解&#xff08;Annotation&#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。Java 中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。例如JUnit单元测试中的Test方法&#xff0c;可以使得方法直接运行。JUnit单元测试Test单元测试是针…...

信息系统项目管理师:配置管理

配置管理指的是在一个系统或软件中对配置项的管理&#xff0c;包括对配置项的定义、存储、跟踪和修改等一系列活动。配置项可以是硬件设备、软件组件、系统设置、网络配置等&#xff0c;配置管理旨在确保在不同时间点或环境下系统或软件的配置项的正确性和一致性。通过配置管理…...

web餐饮开源程序

简介 一款专门针对餐饮行业而开发桌面应用程序 技术 借助Panuon.UI.Silver控件库&#xff0c;开发的一款餐饮软件。 运行环境&#xff1a;.NETFramework,Versionv4.8。 运行数据库&#xff1a;MySql。 ORM框架&#xff1a;SqlSugar。 第三方插件&#xff1a;Panuon.UI.Silv…...

28个案例问题分析---027---单表的11个Update接口--MyBatis

一&#xff1a;背景介绍 项目开发中。我们使用的是MyBatis&#xff0c;在MyBatis的xml文件里&#xff0c;两个表的更新功能&#xff0c;写了足足11个更新接口&#xff0c;毫无复用的思想 这种方式可以正常的实现功能&#xff0c;但是没有复用&#xff0c;无论是从时间上还是维…...

大数据开发治理平台 DataWorks

序言学习下阿里DataWorks的设计理念以及要做的事情cuiyaonan2000163.com参考文档:https://www.aliyun.com/product/bigdata/idehttps://help.aliyun.com/document_detail/73015.htmlhttps://help.aliyun.com/document_detail/324149.html ----数据治理LaunchDataWorks基于阿里云…...

Xshell的下载、使用、配置【ssh、telnet、串口】

目录 一、概述 二、Xshell的使用  2.1 Xshell使用ssh协议远程连接Linux主机或服务器  2.2 Xshell使用telnet协议远程连接Linux开发板  2.3 Xshell使用SERIAL协议远程连接Linux开发板 三、Xshell常用配置  3.1 配置默认会话属性 一、概述 Xshell是由NetSarang公司开发的强大…...

C++回顾(七)—— 面向对象模型

7.1 静态成员变量和静态成员函数 7.1.1 静态成员变量 关键字 static 可以用于说明一个类的成员&#xff1b;静态成员提供了一个同类对象的共享机制&#xff1b;把一个类的成员说明为 static 时&#xff0c;这个类无论有多少个对象被创建&#xff0c;这些对象共享这个 static …...

开源监控服务uptime-kuma

好久没写文章了&#xff0c;刚好最近用了一个开源的监控服务&#xff0c;感觉蛮有意思的&#xff0c;记录一下 &#xff08;一&#xff09;安装 uptime-kuma安装方式有几种&#xff0c;这里当然是选择大家都爱的docker,一条命令搞定 docker run -d --restartalways -p 3001:…...

JavaScript混淆技术:了解其核心原理和常用手段

当今互联网时代&#xff0c;JavaScript已经成为了web前端开发的重点技术之一。其中&#xff0c;JavaScript代码的安全性问题一直是关注的焦点。为了保护JavaScript代码的安全性&#xff0c;很多人对其进行加密处理&#xff0c;众所周知&#xff0c;对于单纯的加密算法&#xff…...

大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

一套医院云his系统源码 采用前后端分离架构&#xff0c;前端由Angular语言、JavaScript开发&#xff1b;后端使用Java语言开发。融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系&#xff01; 基于云计…...

SAP UI5 Upload/Download file through NetWeaver Gateway

1、创建 SEGW对象 2、创建Entity Type 要把Media 标识打上 3、 激活对象然后到DPC Class的扩展对象里面重定义 /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM /IWBEP/IF_MGW_APPL_SRV_RUNTIME~UPDATE_STREAM METHOD /iwbep/if_m…...

opencv校正图像

目录1、前言2、例程2.1、代码2.2、效果口罩说明书网页3、按步骤分析转灰度图降噪 Canny边缘检测膨胀&#xff08;可视具体情况省略&#xff09;轮廓检索选取角度1、前言 我们用相机拍照时&#xff0c;会因为角度问题造成拍歪&#xff0c;会影响图像的识别&#xff0c;这时就需…...

JavaScript:函数与箭头函数的区别

ref 1. 定义 函数 function getName() {}箭头函数 const getName () > {}2. 命名 函数分为匿名、具名。 function getName() {} let getName function () {}箭头函数只有匿名。 const getName () > {}3. 构造函数 箭头函数都是匿名函数&#xff0c;所以不能作为构造…...

八股文(四)

目录 一、 Vue2的双向数据绑定原理 二、 vue2数据绑定缺点是什么&#xff1f;vue3是怎么解决的&#xff1f; &#xff08;1&#xff09;因为vue2.0 object.defineProperty只能劫持对象属性 &#xff08;2&#xff09;Proxy是直接代理对象 &#xff08;3&#xff09;proxy不…...

XSS挑战赛(xsslabs)1~10关通关解析

简介 XSS挑战赛&#xff0c;里面包含了各种XSS的防御方式和绕过方式&#xff0c;好好掌握里面的绕过细节&#xff0c;有助于我们更好的去发现XSS漏洞以及XSS的防御。本文更多的是分享解析的细节&#xff0c;不是一个标准的答案&#xff0c;希望大家在渗透的时候有更多的思维。…...

什么是以太网供电POE

POE指的是以太网供电&#xff0c;就是一根网线在传输网络的同时还传输设备所需的电源。我们最常见的就是通过POE交换机连接网络摄像头&#xff0c;网络摄像头无需的电源适配器&#xff0c;仅靠一根网线就能实现电源和网络的传输。POE供电一般可以到100米。POE包含两个部分&…...

【JUC2022】第七章 AQS、ReentrantReadWriteLock 和 StampedLock

【JUC2022】第七章 AQS 文章目录【JUC2022】第七章 AQS一、AQS1.概述2.同步器3.抽象的4.队列式二、ReentrantReadWriteLock1.概述2.案例3.存在的问题三、StampedLock1.概述2.案例3.存在的问题一、AQS 1.概述 AQS(AbstractQueueSynchronizer&#xff0c;抽象的队列式同步器)&am…...

Spark 磁盘作用

Spark 磁盘作用磁盘作用性能价值失败重试ReuseExchangeSpark 导航 磁盘作用 临时文件、中间文件、缓存数据&#xff0c;都会存储到 spark.local.dir 中 在 Shuffle Map 时&#xff0c; 当内存空间不足&#xff0c;就会溢出临时文件存储到磁盘上溢出的临时文件一起做归并计算…...

三、Spark 内存管理

文章目录Spark 内存管理堆内和堆外内存堆内内存堆外内存堆外与堆内的平衡内存空间分配静态内存管理&#xff08;早期版本&#xff09;统一内存管理Spark 内存管理 堆内和堆外内存 Spark 引入了堆外&#xff08;Off-heap&#xff09;内存&#xff0c;使之可以直接在工作节点的…...

Java 面试常见项目问题回答

之前整理了好几期&#xff0c;我面试时遇到的面试候选人&#xff0c;我是如何我去筛选的&#xff0c;这一期&#xff0c;我们来看下一些 面试常问的业务性的问题 你们公司权限认证是如何实现的? 这其实是个通用性的问题&#xff0c;大部分公司 小型公司&#xff0c;或者中型公…...

MATLAB与AI结合:使用Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF进行科学计算与数据分析

MATLAB与AI结合&#xff1a;使用Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF进行科学计算与数据分析 1. 科研与工程中的智能计算新范式 想象一下这样的场景&#xff1a;你正在处理一组复杂的实验数据&#xff0c;需要快速实现滤波、拟合和可视化。传统方式可能需要…...

RMBG-2.0多场景落地指南:短视频素材制作+电商主图抠图完整流程

RMBG-2.0多场景落地指南&#xff1a;短视频素材制作电商主图抠图完整流程 想快速给商品换个背景&#xff0c;又怕抠图不干净&#xff1f;想给短视频做个炫酷的片头&#xff0c;却被复杂的背景处理劝退&#xff1f;今天&#xff0c;咱们就来聊聊一个能让你彻底告别繁琐抠图的神…...

OpenRouter最新免费额度调整:如何用微信支付宝充值解锁1000次/天API调用

OpenRouter API调用新规解析&#xff1a;微信支付宝充值实战指南 最近OpenRouter平台对免费API调用额度进行了重要调整&#xff0c;这一变化直接影响着国内开发者和AI爱好者的日常使用体验。作为聚合了300多个主流AI模型的统一接口平台&#xff0c;OpenRouter一直以友好的免费政…...

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案

DynamicColor跨平台开发指南&#xff1a;iOS、macOS、watchOS的统一颜色解决方案 【免费下载链接】DynamicColor Yet another extension to manipulate colors easily in Swift and SwiftUI 项目地址: https://gitcode.com/gh_mirrors/dy/DynamicColor DynamicColor是一…...

Local AI MusicGen商业应用:电商视频智能配乐

Local AI MusicGen商业应用&#xff1a;电商视频智能配乐 你是不是也遇到过这样的烦恼&#xff1f;制作电商短视频时&#xff0c;翻遍了免费音乐库&#xff0c;要么版权有问题&#xff0c;要么风格不搭&#xff0c;要么就是千篇一律的背景音。自己配乐&#xff1f;没那个时间和…...

别再为日期格式头疼了!Oracle TO_TIMESTAMP函数保姆级使用指南(含常见报错解决)

Oracle TO_TIMESTAMP实战&#xff1a;从混乱字符串到精准时间戳的避坑指南 刚接手一个数据迁移项目时&#xff0c;我对着几十万条格式各异的日期记录发愁——有"2023/12/01"这样的斜杠分隔&#xff0c;也有"01-Dec-23 14.30.00.123"带英文月份缩写和毫秒的…...

在Python项目中是否应该采用分层结构

在学习Python的过程中&#xff0c;许多开发人员会发现&#xff0c;一些Django项目在视图函数中包含了大量的业务逻辑&#xff0c;类似于Java中的控制器进行过多的业务处理。这导致了一个关键问题&#xff1a;Python项目是否应该采用分层结构&#xff1f;这与MVC(模型-视图-控制…...

从电子管到全固态:中波广播发射机核心技术演进与选型指南

1. 中波广播发射机的前世今生 第一次见到中波发射机是在十年前参观某省级广播电台时&#xff0c;那座两层楼高的电子管设备让我印象深刻——嗡嗡作响的风扇、散发着热量的金属外壳、闪烁着微光的电子管&#xff0c;活像科幻电影里的场景。如今这种"大家伙"已经逐渐被…...

Buck电路设计避坑指南:为什么你的小信号模型仿真总是不收敛?

Buck电路小信号模型仿真收敛问题实战解析 在电力电子系统设计中&#xff0c;Buck变换器的小信号模型仿真对于理解系统动态特性至关重要。然而&#xff0c;许多工程师在从理论转向实践时&#xff0c;常常遇到仿真不收敛、波形异常等问题。本文将深入剖析这些问题的根源&#xff…...

Janus-Pro-7B入门编程教学:从零开始学习C语言文件读写操作

Janus-Pro-7B入门编程教学&#xff1a;从零开始学习C语言文件读写操作 你是不是刚开始学C语言&#xff0c;一看到文件操作就觉得头大&#xff1f;fopen、fwrite、fread这些函数名字看着就复杂&#xff0c;更别提什么文件指针、缓冲区这些概念了。别担心&#xff0c;这感觉我懂…...