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:

相关推荐
A尘埃15 分钟前
智能工单路由系统(Java)
java·开发语言·智能工单
lingggggaaaa23 分钟前
小迪安全v2023学习笔记(七十八讲)—— 数据库安全&Redis&CouchDB&H2database&未授权&CVE
redis·笔记·学习·算法·安全·网络安全·couchdb
Source.Liu26 分钟前
【Python基础】 13 Rust 与 Python 注释对比笔记
开发语言·笔记·python·rust
诗句藏于尽头32 分钟前
DJANGO后端服务启动报错及解决
数据库·笔记·django
qq_1955516938 分钟前
代码随想录70期day3
开发语言·python
XXYBMOOO43 分钟前
Qt UDP 通信类详解与实现
开发语言·网络·c++·qt·网络协议·ui·udp
pusue_the_sun1 小时前
C语言强化训练(12)
c语言·开发语言·算法
失散131 小时前
分布式专题——1.1 Redis单机、主从、哨兵、集群部署
java·数据库·redis·分布式·架构
刘一说1 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务
IT·陈寒1 小时前
怎么这么多 StringUtils —— Apache、Spring、Hutool 全面对比
java·spring·apache