Предположим, что у меня есть это:
public class Unit<MobileSuit, Pilot> {
...
List<MobileSuit> mobileSuits;
List<Pilot> pilots;
...
}
И я хотел бы перебирать пару из них простейшим способом вне этого класса. Как я должен это делать? Я думал об этом:
public class Unit<MobileSuit, Pilot> {
...
Iterator<MobileSuit> iteratinMechas;
Iterator<Pilot> iteratinPeople;
class IteratorCustom<MobileSuit, Pilot> implements Iterator {
public boolean hasNext() {
return iteratinMechas.hasNext() && iteratinPeople.hasNext();
}
public void remove() {
iteratinMechas.remove();
iteratinPeople.remove();
}
public Object next() {
// /!\
}
}
public Iterator iterator() {
return new IteratorCustom<MobileSuit, Pilot>(mobileSuits, pilots);
}
}
Что-то в этом роде.
Во всяком случае, проблема в том, что я не могу реально вернуть только один объект из next(), и у меня также не может быть Iterator более одного типа. Итак, какие-то мысли?
Кроме того, я не могу создать новый класс для объединения MobileSuit и Pilot. Мне нужно, чтобы они были разделены, хотя я итерации по обоим за раз. Причина в том, что могут быть мобильные костюмы, у которых нет пилотов, и я не уверен, как это исправить, удерживая их в одном классе. Этот класс нужно обрабатывать в других местах, поэтому мне придется объединить интерфейс вокруг этого и многое другое. В принципе, предположим, что MobileSuit и Pilot необходимо разделить.