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

Java - 泛型 + JUnit

一、泛型(参数化类型,在编译时确定)
泛型是一种可以接收数据类型的数据类型(可以这么理解)
作用:
1.能对加入到集合中的数据类型进行约束
2.遍历的时候,不需要进行类型转换,提高效率(因为遍历时,默认的是Object,需要进行类型转换的)
HashMap <String,String> s=new HashMap<>();

import org.junit.jupiter.api.Test;import java.util.ArrayList;public class Main{public static void main(String[] args) {}@Testpublic void test(){ArrayList<Dog> arrayList=new ArrayList<>();Dog dog = new Dog("aaa",12);Dog dog1 = new Dog("bbb",10);Dog dog2 = new Dog("ccc",14);arrayList.add(dog);arrayList.add(dog1);arrayList.add(dog2);for (Dog x:arrayList){  //不需要Object,向下转型,才能使用Dog的toString()方法System.out.println(x.toString());}}
}
class Dog{private String name;private int age;public Dog(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age=" + age +'}';}
}

语法:
泛型的声明(接口,类)
interface "接口" <T> 和 class "类" <K,V>{}
其中,K,T,V,不代表值,表示类型
泛型的实例化(集合)
HashMap <String,String> s=new HashMap<>();

自定义泛型类
class "类名" <T,R,...>{}
class person <E>{
private E name;
public E find(){}
}
细节:
1.普通成员可以使用泛型(属性,方法)
2.使用泛型的数组,不能初始化
3.静态方法中不能使用类的泛型,因为类的泛型,是后面看情况的,而静态方法中的东西,都需要在类加载的时候生成
4.泛型类的类型,是在创建对象时确定的
5.如果在创建对象时,没有指定类型,默认是Object

自定义泛型接口
 interface "接口名" <T,R,...>{}
细节:
1.接口中,静态成员也不能使用泛型
2.泛型接口的类型,在继承接口或者实现接口的时候确定的
3.没有指定类型,默认为Object

自定义泛型方法
修饰符 <T,R,....>返回类型 方法名 (形参){}
细节:
1.泛型方法,可以定义在普通类中,也可以定义在泛型类中
2.当泛型方法被调用是,类型会确定
3.public void eat(E e){} ,这叫做使用了泛型

泛型的继承和通配符
1.泛型不具备继承性
2. <?>:支持任意泛型类型
3. <? extends A> :支持A类以及A类的子类,规定了泛型的上线
4. <? super A> :支持A类以及A类的父类,不限于直接父类,规定了泛型的下限
 

二、JUnit使用
JUnit是一个Java语言的单元测试框架。
一个类有很多功能代母需要测试,为了测试,就需要写入到main方法中。多个代码测试,就需要来回注销和切换,很麻烦。Junit使用后,就可以直接运行一个方法。

public class test {public static void main(String[] args) {}@Test        //未创建JUnit时,之后点击"Alt+Enter",之后Add Junit5.8.1,就ok了public void dfs(){}
}

相关文章:

Java - 泛型 + JUnit

一、泛型(参数化类型,在编译时确定) 泛型是一种可以接收数据类型的数据类型(可以这么理解) 作用&#xff1a; 1.能对加入到集合中的数据类型进行约束 2.遍历的时候&#xff0c;不需要进行类型转换&#xff0c;提高效率(因为遍历时&#xff0c;默认的是Object,需要进行类型转换的…...

vue3实现包含表格的Word文件导出

vue3实现包含表格的Word文件导出 近期遇到一个要求&#xff0c;需要在网页上导出Word文档&#xff0c;文档中有表格&#xff0c;也有普通的数据&#xff0c;查阅了很多资料&#xff0c;总算比较完美的解决了&#xff0c;记录一下 先上一下最终效果 演示视频 vue3项目根据Wor…...

【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享

文章目录 demo代码加载配置文件speech_tokenizer_v1.onnx(只在zero_shot的时候使用)campplus.onnx(只为了提取说话人音色embedding)`campplus_model` 的作用代码解析具体过程解析总结示意图CosyVoiceFrontEndCosyVoiceModel推理过程总体推理过程推理速度很慢: https://git…...

flask高频面试题

目录 高频面试题及答案1. 如何在Flask中处理数据库迁移&#xff1f;2. Flask如何处理文件上传&#xff1f;3. 如何在Flask中处理跨域请求&#xff08;CORS&#xff09;&#xff1f;4. 如何在Flask中实现用户认证&#xff1f;5. Flask如何处理会话&#xff1f;6. Flask如何处理表…...

尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

五、使用docker安装mysql 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 使用 Docker 安装 MySQL 与安…...

filebeat + logstash使用笔记

背景 本文中有2台主机&#xff1a; &#xff08;1&#xff09;1.1.1.1是OpenStack的nova节点&#xff0c;安装filebeat &#xff08;2&#xff09;1.1.1.2是logstash节点 在1.1.1.1上通过filebeat读取OpenStack的nova-compute组件日志&#xff08;/var/log/nova/nova-compute.…...

学校考场电子钟设置自动开关机,节能环保

在标准化考试中&#xff0c;准确的时间显示对于确保考试的公正性和秩序至关重要。然而&#xff0c;传统的电子钟系统往往存在一些问题&#xff0c;影响了考试管理的效率。 一、学校普通电子钟使用问题 二、学校考场电子钟优点 学校同步时钟系统通过自动同步网络或卫星时间的方式…...

短剧APP系统开发带来了哪些发展空间?

在影视行业快速发展的时期&#xff0c;短剧作为一种新兴的影视模式&#xff0c;获得了大众的欢迎。目前&#xff0c;短剧行业巨大的发展空间&#xff0c;再次成为大众关注的焦点。 随着移动互联网的发展&#xff0c;信息技术不断升级进步&#xff0c;短剧APP系统的开发&#x…...

PaddlePaddle / PaddleOCR踩坑记,动手实现一个OCR服务器

文章目录 一、环境搭建1、官网2、准备环境 二、编码实现一个web程序 一、环境搭建 1、官网 https://gitee.com/paddlepaddle/PaddleOCR#/paddlepaddle/PaddleOCR/blob/main/doc/doc_ch/quickstart.md 2、准备环境 本地环境坑太多了&#xff0c;好在官网还有一种基于docker搭…...

JeecgBoot低代码平台简单记录

BasicModal弹窗 Usage 由于弹窗内代码一般作为单文件组件存在&#xff0c;也推荐这样做&#xff0c;所以示例都为单文件组件形式 注意v-bind"$attrs"记得写&#xff0c;用于将弹窗组件的attribute传入BasicModal组件 attribute&#xff1a;是属性的意思&#xff0c;…...

零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之xgboost&#xff08;筛选特征基因&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之xgboost&#xff08;筛选特征基因&#xff09;1. xgboost基础知识2. xgboost&#xff08;Rstudio&#xff09;——代码实操2. 1 数据…...

C#开发常见面试题三(浅复制和深复制的区别)

C#开发常见面试题三(浅复制和深复制的区别) 一.浅复制和深复制定义 &#xff08;1&#xff09;浅复制&#xff1a;复制一个对象的时候&#xff0c;仅仅复制原始对象中所有的非静态类型成员和所有的引用类型成员的引用。&#xff08;新对象和原对象将共享所有引用类型成员的实…...

Linux/C 高级——Linux命令

从这里开始&#xff0c;我们展开对Linux/c 高级的学习&#xff0c;首先介绍的是在Linux/c高级中&#xff0c;Linux的部分 目录 1.Linux简介 1.1Linux起源 1.2查看系统版本命令 1.3分层结构 1.4系统关机重启命令 2.Linux安装工具 2.1软件包安装 2.1.1软件包的管理机制 …...

怎么在 tailwindcss 项目中自定义一些可复用的样式

在 Tailwind CSS 项目中自定义可复用的样式有几种常用方法: 使用 apply 指令 你可以在 CSS 文件中使用 apply 指令来创建可复用的样式类: layer components {.btn-primary {apply py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 f…...

在vue3中 引入echarts

安装&#xff1a;npm install echarts --save 方式一&#xff1a;直接在组件中引用 <template><divref"myChart"id"myChart":style"{ width: 800px, height: 400px }"></div></template><script>import * as echa…...

栈和队列(数据结构)

1. 栈(Stack) 1.1 概念 栈 &#xff1a;一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO &#xff08; Last In First Out &#xff09;的原…...

如何实现ElementUI表单项label的文字提示?

在Vue和ElementUI的丰富组件库中,定制化表单是常见的需求之一。那么如何在表单项label后添加文字提示,以提升用户体验呢? 首先我们来看一下效果图: 这里我们鼠标移动到❓图标上就会出现提示 在 ElementUI 中,el-form-item 组件允许使用 slot 自定义 label。通过在 el-fo…...

c++中的标准库

前言 hello&#xff0c;我是文宇。 正文 C标准库是C编程语言的基本组成部分之一&#xff0c;它为开发人员提供了一套丰富和强大的工具和功能&#xff0c;以便快速开发高效、可靠和可移植的应用程序。C标准库由两个主要部分组成&#xff1a;STL&#xff08;Standard Template…...

洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解

题目目录&#xff1a; No.1 B2145 digit 函数 No.2 B2146 Hermite 多项式 OK&#xff0c;开始正文&#xff01; 第一题&#xff1a;B2145 digit 函数 题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n …...

tailwindcss @apply 和 @layer 有什么区别

在 Tailwind CSS 中&#xff0c;apply 和 layer 是两个不同的指令&#xff0c;它们各自有不同的用途和功能。以下是它们的区别和使用方法&#xff1a; apply 指令 apply 指令用于将一组现有的 Tailwind CSS 工具类应用到一个自定义的 CSS 类中。这对于简化和复用复杂的样式非…...

如何快速掌握Notepad--:跨平台文本编辑器的完整指南

如何快速掌握Notepad--&#xff1a;跨平台文本编辑器的完整指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器&#xff0c;目标是做中国人自己的编辑器&#xff0c;来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- Notepa…...

WarcraftHelper:魔兽争霸III游戏优化与兼容性解决方案

WarcraftHelper&#xff1a;魔兽争霸III游戏优化与兼容性解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款针对魔兽争霸I…...

龙芯k - 走马观碑组MPU驱动移植僖

先回顾&#xff1a;三次握手&#xff08;建立连接&#xff09;核心流程&#xff08;实际版&#xff09; 为了让挥手流程衔接更顺畅&#xff0c;咱们先快速回顾三次握手的实际核心&#xff0c;避免上下文脱节&#xff1a; 第一步&#xff08;客户端→服务器&#xff09;&#xf…...

微信网页版浏览器插件:3分钟实现跨设备无缝通讯的终极方案

微信网页版浏览器插件&#xff1a;3分钟实现跨设备无缝通讯的终极方案 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 你是否曾在公司电脑上无法安装微…...

AudioSwitch:Windows音频设备一键切换与音量管理的终极解决方案

AudioSwitch&#xff1a;Windows音频设备一键切换与音量管理的终极解决方案 【免费下载链接】AudioSwitch Switch between default audio input or output change volume 项目地址: https://gitcode.com/gh_mirrors/au/AudioSwitch 在Windows系统中频繁切换音频设备是否…...

销售团队要实时看数据:智能问数能替代Dashboard吗?

不能一概而论——在简单、固定口径的场景下&#xff0c;智能问数可以部分替代传统Dashboard&#xff1b;但在复杂、动态、跨系统的业务环境中&#xff0c;是否能替代&#xff0c;取决于所采用的技术路径。截至2026年4月初&#xff0c;主流技术路线可分为四类&#xff1a;RAG召回…...

保姆级教程:在YOLOv8.yaml里手动添加P2层,让你的模型看清8x8像素的小目标

在YOLOv8中集成P2层的实战指南&#xff1a;从配置文件修改到性能优化 当面对监控摄像头中快速移动的蚂蚁群或是卫星图像里的小型车辆时&#xff0c;传统目标检测模型往往会力不从心。这些8x8像素级别的微小目标&#xff0c;恰恰是许多实际应用场景中的关键检测对象。本文将彻底…...

小白友好!Qwen2.5-7B-Instruct本地部署,实时参数调节实战

小白友好&#xff01;Qwen2.5-7B-Instruct本地部署&#xff0c;实时参数调节实战 1. 为什么选择Qwen2.5-7B-Instruct Qwen2.5-7B-Instruct是阿里通义千问团队推出的旗舰级大语言模型&#xff0c;相比轻量级的1.5B/3B版本&#xff0c;7B参数规模带来了质的飞跃。这个模型在18T…...

工程师必读:Datasheet高效阅读与实战技巧

1. 为什么Datasheet是工程师的必修课第一次拿到TI的TPS5430电源芯片datasheet时&#xff0c;我盯着那58页的英文文档发呆了半小时。当时刚入行的我完全不明白&#xff0c;为什么一个简单的DC-DC转换器需要如此复杂的技术文档。直到项目deadline前三天&#xff0c;电路板上的电源…...

STM32F103移相全桥PWM寄存器级配置实战

1. STM32F103移相全桥PWM控制的核心原理 移相全桥拓扑在DCDC电源设计中非常常见&#xff0c;它通过调节两个桥臂之间的相位差来控制功率传输。STM32F103的高级定时器TIM1和TIM8正好可以完美实现这个功能。我做过好几个电源项目&#xff0c;发现直接操作寄存器比用库函数效率高得…...