Насколько я понимаю, этот мой запрос НЕ возможен прямым способом.но я хочу найти решение, которое работает.
Вот как я получаю Iterable для NamedNodeMap(javax package);
private static Iterable<Node> iterableNamedNodeMap(NamedNodeMap namedNodeMap) {
return () -> new Iterator<Node>() {
private int index = 0;
@Override
public boolean hasNext() {
return index < namedNodeMap.getLength();
}
@Override
public Node next() {
if (!hasNext())
throw new NoSuchElementException();
return namedNodeMap.item(index++);
}
};
}
А вот итерируемый для NodeList(javax)
private static Iterable<Node> iterableNamedNodeMap(NodeList nodeList) {
return () -> new Iterator<Node>() {
private int index = 0;
@Override
public boolean hasNext() {
return index < nodeList.getLength();
}
@Override
public Node next() {
if (!hasNext())
throw new NoSuchElementException();
return nodeList.item(index++);
}
};
}
Поскольку они в значительной степени идентичны, за исключением параметров, я надеялся на что-то подобное, что, конечно, не правильно.И NodeList, и NamedNodeMap не реализуют общий интерфейс.так что это лучший способ сделать здесь.
private static <T extends NodeList | NamedNodeMap> Iterable<Node> iterableNamedNodeMap(T in) {
return () -> new Iterator<Node>() {
private int index = 0;
@Override
public boolean hasNext() {
return index < in.getLength();
}
@Override
public Node next() {
if (!hasNext())
throw new NoSuchElementException();
return in.item(index++);
}
};