多角度看 Java 中的泛型
摘自IBM中文网站
泛型是 Sun 公司发布的 JDK 5.0 中的一个重要特性,它的最大优点是提供了程序的类型安全同可以向后兼容。为了帮助读者更好地理解和使用泛型,本文通过一些示例从基本原理,重要概念,关键技术,以及相似技术比较等多个角度对 Java 语言中的泛型技术进行了介绍,重点强调了泛型中的一些基本但又不是很好理解的概念。
为了避免和 C++ 中的模板混淆,本文简要介绍了 Java 中的泛型和 C++ 中的模板的主要区别,希望这种比较能够帮助读者加深对泛型的理解。
回页首
回页首
回页首
?
在 Java 语言中,我们可以将某种类型的变量赋值给其父类型所对应的变量,例如,String 是 Object 的子类型,因此,我们可以将 String 类型的变量赋值给 Object 类型的变量,甚至可以将 String [ ] 类型的变量(数组)赋值给 Object [ ] 类型的变量,即 String [ ] 是 Object [ ] 的子类型。
上述情形恐怕已经深深地印在了广大读者的脑中,对于泛型来讲,上述情形有所变化,因此请广大读者务必引起注意。为了说明这种不同,我们还是先来分析一个小例子,代码如下所示:
1List<string></string> ls = new ArrayList<string></string>(); 2Listlo = ls; 3 lo.add(new Integer()); 4 String s = ls.get(0);1 楼 kanokano 2007-07-06 很好啊?
上述代码的第二行将
List<string></string>
赋值给了List,按照以往的经验,这种赋值好像是正确的,因为
List<string></string>
应该是List的子类型。这里需要特别注意的是,这种赋值在泛型当中是不允许的!
List<string></string>
也不是List