Spec-Zone .ru
спецификации, руководства, описания, API
|
Платформа Наборов Java была разработана, чтобы гарантировать полную функциональную совместимость между базовыми интерфейсами набора и типами, которые использовались, чтобы представить наборы в ранних версиях платформы Java: Vector
, Hashtable
Enumeration
Предположите, что Вы используете API, который возвращает наборы наследства в тандеме с другим API, который требует объектов, реализовывая интерфейсы набора. Чтобы заставить эти два API взаимодействовать гладко, необходимо преобразовать наборы наследства в современные наборы. К счастью Платформа Наборов Java делает это легким.
Предположите, что старый API возвращает массив объектов, и новый API требует a Collection
. У Платформы Наборов есть реализация удобства, которая позволяет массиву объектов просматриваться как a List
. Вы используете Arrays.asList
Collection
или a List
.
Foo[] result = oldMethod(arg); newMethod(Arrays.asList(result));
Если старый API возвращает a Vector
или a Hashtable
, у Вас нет никакой работы, чтобы сделать вообще потому что Vector
был retrofitted, чтобы реализовать List
интерфейс, и Hashtable
был retrofitted, чтобы реализовать Map
. Поэтому, a Vector
может быть передан непосредственно к любому методу, призывающему a Collection
или a List
.
Vector result = oldMethod(arg); newMethod(result);
Точно так же a Hashtable
может быть передан непосредственно к любому методу, призывающему a Map
.
Hashtable result = oldMethod(arg); newMethod(result);
Менее часто API может возвратиться Enumeration
это представляет набор объектов. Collections.list
метод преобразовывает Enumeration
в a Collection
.
Enumeration e = oldMethod(arg); newMethod(Collections.list(e));
Предположите, что Вы используете API, который возвращает современные наборы в тандеме с другим API, который требует, чтобы Вы передали в наборах наследства. Чтобы заставить эти два API взаимодействовать гладко, необходимо преобразовать современные наборы в старые наборы. Снова, Платформа Наборов Java делает это легким.
Предположите, что новый API возвращает a Collection
, и старый API требует массива Object
. Поскольку Вы, вероятно, знаете, Collection
интерфейс содержит a toArray
метод, разработанный явно для этой ситуации.
Collection c = newMethod(); oldMethod(c.toArray());
Что, если старый API требует массива String
(или другой тип) вместо массива Object
? Вы только используете другую форму toArray
— тот, который берет массив на вводе.
Collection c = newMethod(); oldMethod((String[]) c.toArray(new String[0]));
Если старый API требует a Vector
, стандартный конструктор набора пригождается.
Collection c = newMethod(); oldMethod(new Vector(c));
Случай, где старый API требует a Hashtable
обрабатывается аналогично.
Map m = newMethod(); oldMethod(new Hashtable(m));
Наконец, что делает Вы делаете, если старый API требует Enumeration
? Этот случай не распространен, но это действительно время от времени происходит, и Collections.enumeration
Collection
и возвраты Enumeration
по элементам Collection
.
Collection c = newMethod(); oldMethod(Collections.enumeration(c));