Я хочу неявно применить свою собственную реализацию интерфейса к функции Java8.Неявный листинг функционального интерфейса
Мой код:
import java.util.stream.Stream;
@FunctionalInterface
interface StringChanger {
String change(String o);
}
public class A {
public static void main(String[] args) {
Stream.of("hello", "world")
.map(new StringChanger() {
@Override
public String change(String o) {
return o.trim();
}
})
.forEach(System.out::println);
}
}
Почему приведение не работает?
Я получаю это исключение:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method map(Function<? super String,? extends R>) in the type Stream<String> is not applicable for the arguments (Trimmer)
at A.main(A.java:13)
* «моя реализация интерфейса» * не имеет смысла. Интерфейс не является реализацией по существу. Почему вы хотите иметь 'StringChanger' вместо' UnaryOperator 'и почему это имеет значение? –
Tunaki
Ничего себе, вы полностью изменили вопрос, аннулировав все текущие ответы. Это не круто, и я думаю, что он должен быть отменен. Мена и Ченгпохи даже должны были удалить свои ответы в результате этого, поэтому они буквально потеряли время, пытаясь помочь вам! – Tunaki
Давление сверстников заставило меня вернуть мои изменения к этому (часто заниженному) вопросу. Обновленная версия переносится на http://stackoverflow.com/q/35866449/476791. @Tunaki – slartidan