我只是想知道是否可以避免在此代码中使用接口
public interface FunctionT<T,R> {
R apply(Integer...args);
}
public static FunctionT sum = (params) -> Arrays.asList(params)
.stream()
.reduce(Integer::sum).get();
答案 0 :(得分:3)
Java中lambda表达式的类型是功能接口。这意味着必须为lambda提供作为功能接口的目标类型。这可以是您的(FunctionT
)或标准的java.util.function.Function
。
换句话说,Java中的函数类型是名义,而不是结构。
(另外,您不想在get()
上盲目致电Optional
,您想使用其中一种安全方法,例如orElse()
或ifPresent()
否则你首先会失去使用Optional
的所有安全性。)