Java 中的泛型与 C++ 模板的比较

      GJ(Generic Java,java泛型) 程序的语法在表面上与 C++ 中的模板非常类似,但是二者之间有着本质的区别。

      首先,Java 语言中的泛型不能接受基本类型作为类型参数――它只能接受引用类型。这意味着可以定义 List<Integer>,但是不可以定义 List<int>。
      其次,在 C++ 模板中,编译器使用提供的类型参数来扩充模板,因此,为 List<A> 生成的 C++ 代码不同于为 List<B> 生成的代码,List<A> 和 List<B> 实际上是两个不同的类。而 Java 中的泛型则以不同的方式实现,编译器仅仅对这些类型参数进行擦除和替换。类型 ArrayList<Integer> 和 ArrayList<String> 的对象共享相同的类,并且只存在一个 ArrayList 类。

posted on 2013-03-26 21:41  小牧童的天空  阅读(744)  评论(0编辑  收藏  举报