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:

相关推荐
凉、介1 小时前
Armv8-A virtualization 笔记 (二)
笔记·学习·嵌入式·arm·gic
智者知已应修善业2 小时前
【ICL8038芯片正弦波三角波方波发生器电路】2024-1-5
驱动开发·经验分享·笔记·硬件架构·硬件工程
踩着两条虫2 小时前
「AI + 低代码」的可视化设计器
开发语言·前端·低代码·设计模式·架构
JoneBB2 小时前
ABAP Webservice连接
运维·开发语言·数据库·学习
budingxiaomoli3 小时前
Spring IoC &DI
java·spring·ioc·di
Spider Cat 蜘蛛猫3 小时前
Springboot SSO系统设计文档
java·spring boot·后端
未若君雅裁3 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
探序基因3 小时前
身高与基因的关系
笔记
即使再小的船也能远航3 小时前
【Python】安装
开发语言·python
学习中.........3 小时前
从扰动函数的变化,感受红黑树带来的性能提升
java