【发布时间】:2020-07-02 23:21:31
【问题描述】:
我对这里的泛型还很陌生,需要一些帮助。
我正在尝试使用 Generic Predicate、Generic java.util Function、Generic List 作为参数创建一个 Generic 方法。方法是这样的:
public static <T> T getValue(Predicate<? super Object> condition, Function<? super Object, ? extends Object> mapper, T elseResult, List<T> table) {
T result = null;
if (table != null)
result = table.stream()
.filter(condition)
.map(mapper).findAny().orElse(elseResult); // Syntax error here.
else
result = elseResult;
return (T) result;
}
orElse(elseResult) 方法出现错误。这是错误 -
The method orElse(capture#1-of ? extends Object) in the type Optional<capture#1-of ? extends Object> is not applicable for the arguments (T).
我不确定这个错误是关于什么的。那么有人可以告诉我我在这里做错了什么吗?谢谢。
【问题讨论】:
-
static <T> T getValue(Predicate<? super T> condition, Function<? super T, T> mapper, T elseResult, List<T> table)应该为你做。
标签: java function generics java-8 predicate