Цитата: «Что означает конструкция x = x || y?»
Присвоение значения по умолчанию.
Это означает, что предоставляет значение по умолчанию y для x , в случае, если x все еще ждет своего значения, но еще не получил его или был умышленно опущен, чтобы вернуться к умолчанию.
Вы также можете попробовать:
private String foo(Deque<String> words) {
return String.join(" ", (Iterable<String>) words::descendingIterator);
}
Но для общего случая было бы лучше создать вспомогательный метод:
public static <T> Iterable<T> iterable(Iterable<T> iterable) {
return iterable;
}
Тогда используйте его просто так:
private static String foo(Deque<String> words) {
return String.join(" ", iterable(words::descendingIterator));
}
Хорошо, я нашел правильный путь, и это было на самом деле довольно просто:
private String foo(Deque<String> words) {
Iterator<String> iterator = words.descendingIterator();
return String.join(" ", (Iterable<String>) () -> iterator);
}
Нет необходимости использовать подстановочный знак вообще.