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:

相关推荐
xuanwenchao4 分钟前
ROS2学习笔记 - 1、编写运行第一个程序
笔记·学习
独小乐8 分钟前
018.使用I2C总线EEPROM|千篇笔记实现嵌入式全栈/裸机篇
linux·笔记·单片机·嵌入式硬件·arm·信息与通信
xiaoshuaishuai812 分钟前
C# 实现百度搜索算法逆向
开发语言·windows·c#·dubbo
A-Jie-Y12 分钟前
JAVA框架-SpringBoot环境搭建指南
java·spring boot
yuan1999713 分钟前
使用模糊逻辑算法进行路径规划(MATLAB实现)
开发语言·算法·matlab
深兰科技20 分钟前
深兰科技与淡水河谷合作推进:矿区示范加速落地
java·人工智能·python·c#·scala·symfony·深兰科技
码界奇点32 分钟前
基于Spring Boot的前后端分离商城系统设计与实现
java·spring boot·后端·java-ee·毕业设计·源代码管理
一叶飘零_sweeeet35 分钟前
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
java·死锁·活锁·饥饿
蒸汽求职38 分钟前
北美求职身份过渡:Day 1 CPT 的合规红线与安全入职指南
开发语言·人工智能·安全·pdf·github·开源协议
IT乐手40 分钟前
java 对比分析对象是否有变化
android·java