【发布时间】:2016-06-21 03:07:17
【问题描述】:
我想将自己的接口实现隐式转换为 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<String>,为什么这很重要? -
哇,您完全改变了问题,使所有当前答案无效。这并不酷,我认为应该回滚。因此,Mena 和 chengpohi 甚至不得不删除他们的答案,所以他们真的浪费了时间来帮助你!
-
同侪压力让我恢复了对这个(通常被否决的)问题的更改。更新后的版本移至 stackoverflow.com/q/35866449/476791 。 @Tunaki
标签: java functional-programming