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 分钟前
Java:实现List的定长截取
java·开发语言·list
Lxinccode4 分钟前
python(42) : 监听本地文件夹上传到服务器指定目录
服务器·开发语言·python·文件上传服务器·监听文件上传服务器
峰顶听歌的鲸鱼12 分钟前
30.Linux DHCP 服务器
linux·运维·服务器·笔记·学习方法
水无痕simon20 分钟前
8 shiro的web整合
java
木头左23 分钟前
Python实现ETF网格自动化交易集成动量阈值判断
开发语言·自动化
CodeCraft Studio28 分钟前
全球知名的Java Web开发平台Vaadin上线慧都网
java·开发语言·前端·vaadin·java开发框架·java全栈开发·java ui 框架
静水流深-刘申29 分钟前
算法继续刷起-2025年09月26日
开发语言·c++·算法
一只小风华~35 分钟前
Vue Router 命名路由学习笔记
前端·javascript·vue.js·笔记·学习·ecmascript
我是华为OD~HR~栗栗呀38 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试
平平无奇。。。1 小时前
C++11之异常
开发语言·c++·visual studio