网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.企业版JavaBean讨论.
.Sun中文培训教程.
.java Excel API简介(翻译).
.JSTL 入门(2):探讨 core——使用.
.Java动态代理实现AOP.
.Java Socket编程(三)-2.
.常见的Application Server.
.技术摘要:如何编写安全的Java代.
.JDBC专题介绍(2).
.JakartaStruts简介(一).
.Java走势分析.
.spring关于底层资源的抽象.
.安全的基础----学习java安全之前.
.实现对象序列化接口.
.调整 Java I/O 性能.
.返回中文unicode的byte字符串.
.分布式数据库客户端数据集的选用.
.在JavaScript程序中整合Java函数.
.java ee5平台java持久化开发(ej.
.初探Java类加载机制的奥秘.

java api之交互操作性

发表日期:2008-1-5



  交互操作性(Interoperability)

  在本课程中,你将学习两个方面的交互操作性:

  兼容性

  本课程将向你演示如何使对象集与先于对象集添加到Java平台上的旧的API一起工作。

  API 设计

  教给你如何设计一个新的 API,使它们之间可无缝交互操作。

  兼容性

  设计Collection Framework 是为了保证在新的 对象集 接口 和传统的被用来表示 对象集 的类型之间的完全的交互操作性: Vector, Hashtable, array, 和Enumeration。在本节中,你将学习如何将传统的 对象集 转换为新的对象集以及相反的过程。

  向上兼容性


  假设你要使用一个将返回传统 对象集 的 API,同时还要使用另一个API,这个API要求对象实现JDK1.2的对象集接口。为使这两个API可以平滑地交互操作,你必须将传统的 对象集 转化为新的 对象集。幸运的是,Collection Framework 使这个工作变得十分简单。

  假设旧的API 返回一个对象数组,而新的API需要一个 Collection。正象在 实现课程中所讨论的,对象集 架构 具有一个便利实现,它答应一个对象数组被当作一个 List。使用Arrays.asList, 一个数组可被传递给需要一个 Collection 或一个 List 的任意方法。 Foo[] result = oldMethod(arg);

newMethod(Arrays.asList(result));

  假如旧的API 返回一个 Vector 或 Hashtable, 你就一点工作都不需要做了,因为 Vector 已被改造为实现了 List 接口,而 Hashtable 也被改造为实现了 Map。 于是,一个 Vector 可被直接传递给需要一个 Collection 或一个 List 的任意方法。

Vector result = oldMethod(arg);

newMethod(result);

  类似的,一个 Hashtable 可被直接传递给需要一个 Map 的任意方法。

Hashtable result = oldMethod(arg);

newMethod(result);

  比较少见的是,一个API 返回一个 Enumeration ,它代表了一个对象的 对象集。虽然没有对将 Enumeration 转换为Collection 的直接支持,但要创建包含由Enumeration 返回的所有元素的 Collection ,也是一个简单的事情:

Enumeration e = oldMethod(arg);

List l = new ArrayList();

while (e sMoreElements())

l.add(e.nextElement());

newMethod(l);
  向后兼容

  假设你要使用一个将返回 "新的 对象集" 的API,同时还要使用一个需要你传递 "传统的 对象集" 的API。 为使这两个API平滑地交互操作,你必须将新的 对象集 转化为传统的对象集。 同样地,Collection Framework 使这个工作十分简单。
天呀,今天是你的幸运日吧?

  假设新API返回一个 Collection, 而旧的API 需要一个Object数组。你可能已经知道了,Collection 接口包含一个 toArray 方法,它明显的是为此种情况设计的:

Collection c = newMethod();

oldMethod(c.toArray());

  假如旧的API 需要一个 String 数组(或某些其它类型) 而不是 Object数组,那又该怎么办呢?不要丧失希望。你只要使用 toArray 的其它形式--在输入上使用数组的形式就可以了:

Collection c = newMethod();

oldMethod((String[]) c.toArray(new String[0]));

  假如旧的API 需要一个 Vector, 那么就使用手头的标准对象集构造函数好了:

Collection c = newMethod();

oldMethod(new Vector(c));

旧的 API 需要一个 Hashtable 的情况可被对等地处理:

Map m = newMethod();

上一篇:J2EE Web服务客户端质量报告(四) 人气:428
下一篇:使用Java控制UDP协议 人气:643
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐