Java - 泛型 + JUnit

一、泛型 (参数化类型,在编译时确定)

泛型是一种可以接收数据类型的数据类型(可以这么理解)

作用:

1.能对加入到集合中的数据类型进行约束

2.遍历的时候,不需要进行类型转换,提高效率(因为遍历时,默认的是Object,需要进行类型转换的)

HashMap <String,String> s=new HashMap<>();

java 复制代码
import org.junit.jupiter.api.Test;

import java.util.ArrayList;

public class Main{
    public static void main(String[] args) {

    }

    @Test
    public 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;
    }

    @Override
    public 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.泛型不具备继承性

  1. <?>:支持任意泛型类型

  2. <? extends A> :支持A类以及A类的子类,规定了泛型的上线

  3. <? 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(){
        
    }
}
相关推荐
怕浪猫6 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i8 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J8 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
weixin_307779139 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
朝朝辞暮i10 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i10 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
Godspeed Zhao11 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
可乐ea11 小时前
Agent 模型分级升级路由:用置信度阈值把贵模型省下来
人工智能·算法·机器学习·结构化输出·置信度路由·模型升级路由·大模型成本优化
Navigator_Z11 小时前
LeetCode //C - 1278. Palindrome Partitioning III
c语言·算法·leetcode
Godspeed Zhao11 小时前
现代智能雷达技术18——算法(4)
算法