java api之交互操作性 - 编程入门网
java api之交互操作性时间:2010-12-24交互操作性(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); java api之交互操作性(2)时间:2010-12-24向后兼容 假设你要使用一个将返回 "新的 对象集" 的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(); oldMethod(new Hashtable(m)); 最后,如果旧的API 需要一个 Enumeration,你该怎么办呢?这种情况不普遍,但它确实时有发生。Collections.enumeration 方法可用来处理此中情况。这个方法是个静态方法,它采用一个Collection并返回一个在 Collection 的元素之上的 Enumeration : Collection c = newMethod(); oldM |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |