多态是一种泛化机制。可以将方法的参数类型设为基类,那么该方法就可以接受从这个基类导出的任何类作为参数。
泛型实现了参数化类型的概念,使得代码可以应用于多种类型。
泛型出现的原因之一就是为了创建容器类。
容器:就是存放要使用的对象的地方,容器类是重要的类库之一。
暂时不指定类型,在此后决定具体使用什么类型。为此引入类型参数这一概念。其形式为:用尖括号括住,放在类名后面,在使用的时候,再用实际的类型替换此类型参数。
元组:指一组对象直接打包存储于其中的一个单一对象。这个容器对象允许读取其中的元素,但是不允许向其中放入新的对象。元组可以具有任意长度,元组中的对象可以是任意不同的类型。
public class TwoTuple<A, B>
<A, B>表明这是一个二维元组,能够持有两个对象。
利用继承机制可以实现长度更长的元组。
泛型也可以用于接口。
生成器:这是一种专门负责创建对象的类。它是工厂方法设计模式的一种应用。
就一般情况下,一个生成器只定义一种方法,该方法用以产生新的对象。
public interface Generator<T> { T next(); }
方法next()的返回类型是参数化的T。
基本类型无法作为类型参数,但是自动打包/拆包机制可以解决这个问题。
泛型方法
是否用于泛型方法与其所在的类是否是泛型没有关系,也就是说泛型方法与泛型类是可以完全相互独立存在的。
基本原则:无论何时,只要条件允许,就应该尽可能的使用泛型方法。对于一个static方法而言,无法访问泛型类的类型,跟进一步的表明,如果static方法需要使用泛型能力,就必须使其称为泛型方法。