我们前面已经讲到了泛型的继承关系:Pair<Integer>不是Pair<Number>的子类。 假设我们定义了Pair<T>: public class Pair<T> { ... } 然后,我们又针对Pair<Number>类型写了一个静态方法,它接收的参数类型是Pair<Number>: public class Pai
泛型是一种类似”模板代码“的技术,不同语言的泛型实现方式不一定相同。 Java语言的泛型实现方式是擦拭法(Type Erasure)。 所谓擦拭法是指,虚拟机对泛型其实一无所知,所有的工作都是编译器做的。 例如,我们编写了一个泛型类Pair<T>,这是编译器看到的代码: public class Pair<T> { private T first; private T la
编写泛型类比普通类要复杂。通常来说,泛型类一般用在集合类中,例如ArrayList<T>,我们很少需要编写泛型类。 如果我们确实需要编写一个泛型类,那么,应该如何编写它? 可以按照以下步骤来编写一个泛型类。 首先,按照某种类型,例如:String,来编写类: public class Pair { private String first; private String last; p
使用ArrayList时,如果不定义泛型类型时,泛型类型实际上就是Object: // 编译器警告: List list = new ArrayList(); list.add("Hello"); list.add("World"); String first = (String) list.get(0); String second = (String) list.get(1); 此时,只能把&