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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 路漫漫_求索 于 2014-5-24 11:48 编辑

在定义类和方法中,什么情况下需要添加泛型?添加泛型需要注意的事项有哪些?

5 个回复

倒序浏览
当类或方法需要特定的数据类型时添加泛型,添加泛型需要注意运行时类型检查,不同类型的泛型类是等价的(Pair与Pair是属于同一个类型Pair),这一点要特别注意
回复 使用道具 举报

当类中的操作的引用数据类型不确定的时候,以前用的Object来进行扩展的,现在可以用泛型来表示。这样可以避免强转的麻烦,而且将运行问题转移到的编译时期。

泛型的细节:
1)、泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型;
2)、使用带泛型的类创建对象时,等式两边指定的泛型必须一致;
         原因:编译器检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了;
3)、等式两边可以在任意一边使用泛型,在另一边不使用(考虑向后兼容);
回复 使用道具 举报
泛型类:当类中操作的对象不确定时,可以在类中声明泛型。使用时传入具体类型即可。
泛型方法:当方法要操作的数据类型不确定时可以定义泛型,使用的时候传入具体的类型即可。
泛型接口:接口中的抽象方法中的参数类型不确定时,可以在接口上声明泛型,方法中可以使用声明后的泛型参数

具体类型由实现类指定。当实现类也不知道类型时,由实例化实现类时来明确具体类型

泛型的通配符,以及泛型的限定的表现形式,和用法,以及什么时候用
? extends E: 存储元素对象的时候用,你定义的是E类型,可以存储E类型或者E的子类型的对象。
? super E:从容器中取出元素时使用,容器中有E类型对象,取出时可使用E类型接收,或者E的父类型接收。比如比较器。
回复 使用道具 举报
等学到了框架整合开发的时候就会知道泛型的伟大了
回复 使用道具 举报
要理解泛型,就必须了解它的前身--集合类(如:ArrayList,Hashtable,SortedList等集合).集合类是可以代替数组以便灵活管理对象组.注意这里的用词,集合类是个数组(样的东西),集合类用来存储对象,什么是对象,Object.
   集合类的好处是包容性强,万物皆对象,所以他能存任何东西.然而有利就有弊,在产生便利性的同时,它也带来了处理性能损失和错误风险提高的坏处.假如对某一集合,我们存储的都是int类型的数字,由于集合类存储的是对象,所以存入时会进行装箱,将int装为object,在提取时,又会再拆箱,装箱拆箱动作不可避免带来的额外的性能开支.此外,由于集合不加分辨,可以存储任何对象,那么如果我们把int,string或其他对象混装在同一集合中,在拆箱时,也许会由于拆箱不当带来错误,例如,我们想把一个字符串"AAAAA"拆为一个int数值,自然是不被允许的.
   为避免这些弊端,在Net2.0中引入了泛型.泛型其实可以理解为一个强类型的集合类.在ADO.net中,也有类似的改进,那就是强类型Dataset的引入.毋庸置疑,泛型还是个集合,不过它是个确定了存储对象类型的集合,这样,就绕过了装箱拆箱动作,也不会产生拆箱错误.可以这样认为,集合类是泛型的基类部分,泛型新引入的部分是对集合基类的多态扩展.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马