赢在面试之Java泛型篇(十二) (2)

        java泛型实现根植于“类型消除”这一概念。当源代码被转换为Java虚拟机字节码时,这种技术会消除参数化类型。有了Java泛型,我们可以做的事情也并没有真正改变多少;他只是让代码变得漂亮些。鉴于此,Java泛型有时也被称为“语法糖”。

        这和 C++模板截然不同。在 C++中,模板本质上就是一套宏指令集,只是换了个名头,编译器会针对每种类型创建一份模板代码的副本。

由于架构设计上的差异,Java泛型和C++模板有很多不同点:

   C++模板可以使用int等基本数据类型。Java则不行,必须转而使用Integer。

    在Java中,可以将模板的参数类型限定为某种特定类型。

    在C++中,类型参数可以实例化,但java不支持。

    在Java中,类型参数不能用于静态方法(?)和变量,因为它们会被不同类型参数指定的实例共享。在C++,这些类时不同的,因此类型参数可以用于静态方法和静态变量。

        在Java中,不管类型参数是什么,所有的实例变量都是同一类型。类型参数会在运行时被抹去。在C++中,类型参数不同,实例变量也不同。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjxxj.html