S07-02 泛型-JUnit
[TOC]
第 15 章 泛型与 JUnit
泛型的继承和通配符
核心代码示例
java
import java.util.ArrayList;
import java.util.List;
/**
* 泛型的继承和通配符
* @author 韩顺平
* @version 1.0
*/
public class GenericExtends {
public static void main(String[] args) {
Object o = new String("xx");
// 泛型没有继承性
List<Object> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
List<AA> list3 = new ArrayList<>();
List<BB> list4 = new ArrayList<>();
List<CC> list5 = new ArrayList<>();
// 1. List<?> c: 可以接受任意的泛型类型
printCollection1(list1);
printCollection1(list2);
printCollection1(list3);
printCollection1(list4);
printCollection1(list5);
// 2. List<? extends AA> c: 表示上限,可以接受AA 或者AA 子类
// printCollection2(list1);//×
// printCollection2(list2);//×
printCollection2(list3);//√
printCollection2(list4);//√
printCollection2(list5);//√
// 3. List<? super AA> c: 支持AA 类以及AA 类的父类,不限于直接父类
printCollection3(list1);//√
// printCollection3(list2);//×
printCollection3(list3);//√
// printCollection3(list4);//×
// printCollection3(list5);//×
}
// 说明: List<?> 表示任意的泛型类型都可以接受
public static void printCollection1(List<?> c) {
for (Object object : c) {
System.out.println(object);
}
}
// ? extends AA 表示上限,可以接受AA 或者AA 子类
public static void printCollection2(List<? extends AA> c) {
for (Object object : c) {
System.out.println(object);
}
}
// ? super 子类类名AA:支持AA 类以及AA 类的父类,不限于直接父类,规定了泛型的下限
public static void printCollection3(List<? super AA> c) {
for (Object object : c) {
System.out.println(object);
}
}
}
class AA {}
class BB extends AA {}
class CC extends BB {}本章作业
编程题 Homework01.java(10min)
- 定义泛型类
DAO<T>,包含Map成员变量(键为String类型,值为T类型) - 实现以下方法:
public void save(String id, T entity): 保存T类型对象到Mappublic T get(String id): 从Map中获取id对应的对象public void update(String id, T entity): 替换Map中key为id的内容public List<T> list(): 返回Map中所有T对象public void delete(String id): 删除指定id的对象
- 定义
User类:包含私有成员变量id(int)、age(int)、name(String) - 创建
DAO类对象,调用上述方法操作User对象,使用 JUnit 单元测试
JUnit
为什么需要 JUnit
- 传统方式需在
main方法中编写测试代码 - 多个功能测试需来回注销,切换麻烦
- 需直接运行单个方法并获取测试信息
基本介绍
- JUnit 是 Java 语言的单元测试框架
- 多数 Java 开发环境已集成 JUnit
使用示例(JUnit 5)
java
package com.hspedu.junit_;
import org.junit.jupiter.api.Test;
/**
* @author 韩顺平
* @version 1.0
*/
public class JUnit_ {
// 传统方式测试
public static void main(String[] args) {
new JUnit_().m1();
new JUnit_().m2();
}
@Test
public void m1() {
System.out.println("m1 方法被调用");
}
@Test
public void m2() {
System.out.println("m2 方法被调用");
}
@Test
public void m3() {
System.out.println("m3 方法被调用");
}
}