当前位置: 首页 > 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(){}
}

http://www.lryc.cn/news/417993.html

相关文章:

  • vue3实现包含表格的Word文件导出
  • 【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享
  • flask高频面试题
  • 尚硅谷谷粒商城项目笔记——五、使用docker安装mysql
  • filebeat + logstash使用笔记
  • 学校考场电子钟设置自动开关机,节能环保
  • 短剧APP系统开发带来了哪些发展空间?
  • PaddlePaddle / PaddleOCR踩坑记,动手实现一个OCR服务器
  • JeecgBoot低代码平台简单记录
  • 零基础入门转录组数据分析——机器学习算法之xgboost(筛选特征基因)
  • C#开发常见面试题三(浅复制和深复制的区别)
  • Linux/C 高级——Linux命令
  • 怎么在 tailwindcss 项目中自定义一些可复用的样式
  • 在vue3中 引入echarts
  • 栈和队列(数据结构)
  • 如何实现ElementUI表单项label的文字提示?
  • c++中的标准库
  • 洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解
  • tailwindcss @apply 和 @layer 有什么区别
  • React 中的 useMemo 和 useCallback
  • idea社区版lombok总是突然失效:log未知的变量
  • Java语言程序设计基础篇_编程练习题*16.13(比较不同利率的贷款)
  • 正点原子imx6ull-mini-Linux驱动之Regmap API 实验
  • postgresql 双重排序后 重复项 标识次序
  • 线程池ThreadPoolExecutor使用
  • Codeforces Round 963 (Div. 2)
  • Mysql函数学习笔记
  • 【Linux基础】Linux基本指令(一)
  • 全球视野:航空蓄电池的国际标准与技术创新
  • 11-初识python的函数——定义和调用