MOOC 个人学习笔记
# 1. 泛型基础
- 泛型:Generic Programming,JDK1.5 推出的特性
- 泛型类: ArrayList,HashSet,HashMap 等
- 泛型方法:Collections.binarySearch,Arrays.sort 等
- 泛型接口:List, Iterator 等
# 2. 自定义泛型设计
# 泛型类
- 具有泛型变量的类
- 在类名后用 <T> 代表引入类型
- 多个字母表示多个引入类型如 <T, U> 等
- 引入类型可以修饰成员变量 / 局部变量 / 参数 / 返回值
- 没有专门的 template 关键字
public class Interval<T> { | |
private T lower; | |
private T upper; | |
public Interval(T lower, T upper) { | |
this.lower = lower; | |
this.upper = upper; | |
} | |
//Getter and Setter | |
} | |
Interval<Integer> v1 = new Interval<Integer>(1,2); |
# 泛型方法
- 具有泛型参数的方法
- 该方法可在普通类 / 泛型类中
- <T> 在修饰符后,返回类型前
public class ArrayUtil { | |
public static <T> T getMiddle(T... a) | |
{ | |
return a[a.length/2]; | |
} | |
} | |
public static void main(String[] args) { | |
String s1 = ArrayUtil.<String>getMiddle("abc", "def", "ghi"); | |
Integer i1 = ArrayUtil.getMiddle(1,2,3); | |
//null is ok | |
String s2 = ArrayUtil.<String>getMiddle("abc", "def", null); | |
//error 寻找共同超类,再转型 | |
Integer i2 = ArrayUtil.getMiddle(1,2.5f,3L); | |
} |
# 泛型接口
- 和泛型类相似,在类名后加 <T>
- T 用来指定方法返回值和参数
- 实现接口时,指定类型
- T 也可以再是一个泛型类
public interface Calculator<T> { | |
public T add(T operand1, T operand2); | |
} |