A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hh198712 初级黑马   /  2013-3-3 22:29  /  1294 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在泛型出来之前 ,java中都是 object,需要强制性  转化,然而泛型 出来之后,可以直接获取相应对象,不用强制性转换,我不清楚 java 泛型跟 C++中讲解泛型的区别,请高手详解?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
java
1,java提出的泛型机制主要是提高了代码的安全性。
2,可以让问题在编译时期暴露给开发人员,而没有泛型,则问题可能会到你的程序运行时才会暴露,这样避免了一些不必要的麻烦。
3,底层java还是用的Object,泛型只有在编译时期才有用
C++
1、C++的泛型叫做类模板。
2、C++模板的特性主要是编译时针对给定的类型参数生成对应版本的目标代码。java泛型在生成目标代码中不区分泛型的类型参数,只不过针对object(而不是类型参数)生成代码,同时在必要处插入从object到给定的类型参数的类型转换而已。
3、java的泛型基本上是借鉴C++的类模板。可以从某种意义上说是伪泛型。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Java泛型在编译时,是坑爹的{:soso_e128:}
回复 使用道具 举报
在C++中,标准的叫法是:类模版,在java中叫泛型。二者的作用是相同的,不一样的地方在编译解析的方式不同。C++的模板特性是是编译时对于给定的不同的模板类型参数生成对应版本的目标代码。而Java中的泛型是用类型擦除实现的语法糖,实际上在编译期类型检查以外,生成目标代码的过程中根本不区分泛型的类型参数,只不过针对object(而不是类型参数)生成代码,同时在必要处插入从object到给定的类型参数的类型转换而已(也因此类型参数不能是基本类型参数,C++模板就没这个限制),不会比手动实现显式类型转换有更高的运行期效率(不过可以在源代码中省略类型转换能稍微减少写源代码过程中的出错机会)。所以,某种意义上来说,Java的泛型是伪泛型,这也是Java中被人(例如Bruce Eckel)批评最多的特性之一。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马