国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java api之交互操作性

2019-11-18 15:42:32
字體:
來源:轉載
供稿:網友

  交互操作性(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();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 托克托县| 福安市| 尼木县| 玉溪市| 湖北省| 江川县| 扬中市| 苍山县| 雷州市| 都匀市| 镇原县| 会昌县| 平山县| 铜鼓县| 泽州县| 新昌县| 金秀| 林周县| 邻水| 禄丰县| 宁国市| 昌图县| 宣威市| 哈密市| 宿州市| 嘉禾县| 临武县| 汨罗市| 资兴市| 诸暨市| 永修县| 越西县| 康定县| 广州市| 邵阳市| 宜兴市| 来安县| 三亚市| 武乡县| 天气| 长汀县|