|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Платформа Наборов Java была разработана, чтобы гарантировать полную функциональную совместимость между базовыми интерфейсами набора и типами, которые использовались, чтобы представить наборы в ранних версиях платформы Java: Vector, , . В этом разделе Вы изучите, как преобразовать старые наборы к наборам Платформы Наборов Java и наоборот.
Предположите, что Вы используете API, который возвращает наборы наследства в тандеме с другим API, который требует объектов, реализовывая интерфейсы набора. Чтобы заставить эти два API взаимодействовать гладко, необходимо преобразовать наборы наследства в современные наборы. К счастью Платформа Наборов Java делает это легким.
Предположите, что старый API возвращает массив объектов, и новый API требует a Collection. У Платформы Наборов есть реализация удобства, которая позволяет массиву объектов просматриваться как a List. Вы используете передать массив к любому методу, требующему a 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? Этот случай не распространен, но это действительно время от времени происходит, и метод был обеспечен, чтобы обработать это. Это - статический метод фабрики, который берет a Collection и возвраты Enumeration по элементам Collection.
Collection c = newMethod(); oldMethod(Collections.enumeration(c));