java 中的泛型 generic(未完成)

泛型(generic)

为什么要引进泛型?设想这样一种情况,你想设计一个容器类(container)来处理数据,比如你想设计一个通用的List类。为了通用,你可以回想到使用面向对象语言的多态这个特性。以add方法为例,你将有两种可能的实现方法:
1,使用继承来实现多态。在定义函数是,形参是一个父类。那么当你以后使用这个方法时,其所有的子类都可以被传递进来。如:
add(Super a);
那么将来使用这个list容器的时候,你就可以用其来处理a及其所有子类了。
但是这样的限制使得你的这个container还是不够通用。
2,使用interface,在定义方法是形参是一个interface,当你以后要使用这个类时,你只需要实现这个interface。使用interface比继承显得更通用了,但是还是不够用。

看到这里时你会想,如果直接在将形参定义为Object,那么不是所有的类都可以传进来了么?这是一种方法,但是这种方法有很多的问题。
假如我们的add方法是这样定义的void add(Object o)。
那么没问题,因为所有的类都是object 的子类,调用add函数时这些类会自动upcast成object类。
单当我们取出一个元素(element)时,我们必须把它downcast到它真实的类。第一个不好的因素是我们必须手动的实现类型转化;第二,我们必须知道得到的这个类究竟是什么类,downcast错时,会报runtime exception。In a word,downcasting and the runtime checks require extra time for the running program and extra effort from the programmer。

java 在1.5开始引进了泛型(generic)

额,由于时间关系没时间继续好好写了(要复习其他东西了)。
写点简要的东西:
定义一个泛型就是在类后面加上<T>(两个为<A,B>,一次类推),以后T就可以在你类中作为一个类型了。
下个贴额连接,有时间再看


Downcasting and the runtime checks require extra time for the running program and extra effort from the programmer.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值