Java(泛型和JUnit)

传统方法添加元素的问题:

泛型:

  1. 当我们 ArrayList<Dog> 表示存放到 ArrayList 集合中的元素是 Dog 类型

  2. 如果编译器发现添加的类型,不满足要求,就会报错

  3. 在遍历的时候,可以直接取出 Dog 类型而不是 Object

  4. public class ArrayList<E> {} E 称为泛型,那么 Dog->E

好处:

介绍:

class Person<E> {

E s ;//E 表示 s 的数据类型, 该数据类型在定义 Person 对象的时候指定,即在编译期间,就确定 E 是什么类型

public Person(E s) {//E 也可以是参数类型

this.s = s;

}

public E f() {//返回类型使用 E

return s;

}

语法:

泛型使用的注意事项和细节:

自定义泛型:

举例:

Tiger<Double,String,Integer> g = new Tiger<>("john");

g.setT(10.9); //OK

//g.setT("yy"); //错误,类型不对

System.out.println(g);

Tiger g2 = new Tiger("john~~");//OK T=Object R=Object M=Object

g2.setT("yy"); //OK ,因为 T=Object "yy"=String 是 Object 子类

System.out.println("g2=" + g2);

class Tiger<T, R, M> {

...

}

//1. Tiger 后面泛型,所以我们把 Tiger 就称为自定义泛型类

//2, T, R, M 泛型的标识符, 一般是单个大写字母

//3. 泛型标识符可以有多个.

//4. 普通成员可以使用泛型 (属性、方法)

//5. 使用泛型的数组,不能初始化,因为数组在 new 不能确定 T 的类型,就无法在内存开空间

//6. 静态方法中不能使用类的泛型,因为静态是和类相关的,在类加载时,对象还没有创建,所以,如果静态方法和静态属性使用了泛型,JVM 就无法完成初始化

自定义泛型接口:

interface IUsb<U, R> {

int n = 10;

//U name; 不能这样使用

//普通方法中,可以使用接口泛型

R get(U u);

void hi(R r);

void run(R r1, R r2, U u1, U u2);

//在 jdk8 中,可以在接口中,使用默认方法, 也是可以使用泛型

default R method(U u) {

return null;

}

}

自定义泛型方法:

泛型的继承和通配符:

JUnit:

相关推荐
许野平3 小时前
Rust:构造函数 new() 如何进行错误处理?
开发语言·后端·rust
ECC&SM93 小时前
Video_AVI_Packet(2)
笔记·音视频
先做个垃圾出来………4 小时前
如何培养自己工程化的能力(python项目)
开发语言·python
迪尔~4 小时前
Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片
java·pdf·excel
现在,此刻4 小时前
leetcode 11. 盛最多水的容器 -java
java·算法·leetcode
DKPT5 小时前
Java设计模式之开闭原则介绍与说明
java·设计模式·开闭原则
hyy27952276845 小时前
企业级WEB应用服务器TOMCAT
java·前端·tomcat
布朗克1685 小时前
Spring Boot项目通过Feign调用三方接口的详细教程
java·spring boot·feign