| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
一. 为什么需要泛型
在面向对象编程语言中,多态算是一种泛型。但是多态一般的做法是把子类赋给其基类,以此实现灵活性更高的代码 。但是受限于Java的单继承机制,代码的灵活性并不能得到多大的提高。于是,设计模式中推荐的法则是:面向接口编程。可是,问题还是没有得到很好的解决,因为即使是面向接口编程对于设计类库这种需求在某种程度上来说还是太过苛刻了(试想一下如果你需要写一个容器类,但是容器里面的元素要求实现某个特定的接口,这样是不是会变得有点麻烦)。泛型是Java SE5的一个新特性,凭借泛型,java实现了参数化类型的概念。
对比一下以下代码:
| public class GenericTest1 ...{ private Object a; public GenericTest1(Object a) 网管下载dl.bitscn.com } 网管下载dl.bitscn.com public Object getA() ...{ 网管u家u.bitsCN.com public void setA(Object a) ...{ 网管bitscn_com public static void main(String[] args) |
|
public class GenericTest2 <T> ...{ 网管下载dl.bitscn.com public GenericTest2(T a) 网管u家u.bitscn@com public T getA() ...{ public void setA(T a) ...{ 网管联盟bitsCN_com public static void main(String[] args) |
二.泛型接口
泛型也可以应用于接口。简单的例子如下:
网管u家u.bitsCN.com
| public interface GenericInterface <T> ...{ T next(); } public class GenericTest3 implements GenericInterface<Integer> ...{ public GenericTest3(int sz) public Integer next() 网管网www_bitscn_com return a[pos++]; public boolean hasNext() 网管bitscn_com public boolean add(int value) 网管bitscn_com
public int getSize() ...{ public class GenericTest4 implements GenericInterface<String> ...{ 网管u家u.bitsCN.com public GenericTest4(int sz) public String next() return a[pos++]; 中国网管论坛bbs.bitsCN.com
public boolean hasNext() 中国网管联盟bitsCN.com
public boolean add(String value) 网管网www.bitscn.com
public int getSize() ...{ 中国网管论坛bbs.bitsCN.com public class GenericTest5 ...{ 中国网管论坛bbs.bitsCN.com for (int i = 0; i < g3.getSize(); i++) for (int i = 0; i < g4.getSize(); i++) while(g3.hasNext()) while(g4.hasNext()) |
网管网www.bitscn.com
|
0
|
评论加载中…