-2
我想隱式地將我自己的接口實現轉換爲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