第十一章讲过泛型对于代码的安全很有用处。 书中第十五章讲述了大量的篇幅,我这里就简单的介绍一下。(个人泛型用的不多,体会不深,然后书中讲的也没有给我太多启迪)
15.1 与C++的比较 C++中的模板
15.2 简单泛型
public class Holder{ private Object a; public Holder (Object a) { this.a = a; } public void set(Object a) { this.a = a; } public Object get(){ return a; } }上面这个类就可以接收所有类型 15.2.1 一个元组类库
package com.sdkd.hms12; public class C <A, B>{ public final A first; public final B second; public C(A a, B b){ first = a; second = b; } }15.3 泛型接口
interface<T>{ T next(); }返回类型都是T类型的
15.4 泛型方法
public <T> void f(T x){ }15.5 匿名内部类
public static Generator<Customer> generator{ return new Genrator<Customer>{ public Customer next(){ return new Customer(); } } }15.6 构建复杂模型
public class TupleList<A, B, C, D> extends ArrayList<FourTuple<A, B, C, D>>{ }15.7 擦除的神秘之处
Class c1 = new ArrayList<String>().getClass(); Class c2 = new ArrayList<Integer>().getClass();c1 == c2, 是个谜题~
15.8 擦除的补偿 引入类型标签
15.9 边界
class Colored <T extends HasColor>{ }T需要时HasColor的子类
15.10 通配符
List< ? extends Fruit>15.11 问题
任何基本类型都不能作为类型参数一个类不能实现同一个泛型接口的两种变体由于擦除,instanceof是没用的下面的代码是不能编译的 public class UseList<W, T>{ void f(List<T>) {} void f(List<W>) {} } 基类劫持了接口 15.2 自限定的类型 class SelfBounded< T extends SelfBounded<T>>{ }它强调的是当extends用于边界与创建子类是不同的。
15.3 动态类型安全 查看checkedCollection等。异常类型ClassCastException
15.14 异常 15.15 混型 15.16 潜在类型机制 15.17 对潜在类型机制的补偿 15.18 将函数对象用作策略