Backporting Java 1.5+ до 1.4

Как переписать следующие 1.5+ конструкции в 1.4?

final class FooList<T> extends AbstractList<T> implements ...
{
    private T[] tab;
    ...
}

public ListIterator<T> listIterator() {...}

public int bar(int x, Collection<? extends T> c) {...}

for (Foo f : s.baz(x)) {...}

for (Map.Entry<Object, Object> e : p.entrySet()) {...}  

3 ответа

Решение
final class FooList extends AbstractList implements ...
{
    private Object[] tab;
    ...
}

public ListIterator listIterator() {...}

public int bar(int x, Collection c) {...}

for (Iterator it = s.baz(x).iterator(); it.hasNext();) {
  final Foo f = (Foo) it.next();
  ...
}

for (Iterator it = p.entrySet().iterator(); it.hasNext();) {
  final Map.Entry e = (Map.Entry) it.next();
  ...
}

Плюс все необходимые откаты, конечно.

В вашем коде мало что не поддерживается в Java 1.4

  1. Удалить форму вашего кода.
  2. Используйте Object вместо вашей T-ссылки.
  3. Заменить цикл на старый индекс на основе.

Вы можете попробовать Retroweaver, он позволяет использовать некоторые функции Java 5 в Java 1.4.

Другие вопросы по тегам