永发信息网

java的泛型与c++的泛型有什么不一样呢?

答案:2  悬赏:10  手机版
解决时间 2021-01-16 16:53
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-01-16 03:31
java的泛型与c++的泛型有什么不一样呢?
最佳答案
  • 五星知识达人网友:大漠
  • 2021-01-16 03:50
你好,提示一下,在C++中,标准的叫法是:类模版,在java中叫泛型。二者的作用是相同的,不一样的地方在编译解析的方式不同。C++的模板特性是是编译时对于给定的不同的模板类型参数生成对应版本的目标代码。而Java中的泛型是用类型擦除实现的语法糖,实际上在编译期类型检查以外,生成目标代码的过程中根本不区分泛型的类型参数,只不过针对object(而不是类型参数)生成代码,同时在必要处插入从object到给定的类型参数的类型转换而已(也因此类型参数不能是基本类型参数,C++模板就没这个限制),不会比手动实现显式类型转换有更高的运行期效率(不过可以在源代码中省略类型转换能稍微减少写源代码过程中的出错机会)。所以,某种意义上来说,Java的泛型是伪泛型,这也是Java中被人(例如Bruce Eckel)批评最多的特性之一。
全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-01-16 05:20
C++的泛型是在编译时处理的,编译后对应生成真正的类型。Java的泛型通过类型擦除实现,实际保存的是Object,使用时做相应的类型转换
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯