【发布时间】:2017-07-10 18:15:05
【问题描述】:
我有以下接口和类:
public interface Rule<T> {
Predicate<T> evaluate();
}
public interface Criteria<T> {
Predicate<T> evaluate();
}
public abstract class AbstractRule<T> implements Rule<T> {
...
Set<Criteria<T>> criteria;
...
@Override
@Nullable
public Predicate<T> evaluate() {
return criteria.stream().reduce((c1, c2) -> c1.evaluate().and(c2.evaluvate()))
.orElse(null);
}
}
AbstractRule 类包含一组标准。我想通过评估每个标准来对规则进行评估。如标题所述,我在 c1.evaluate().and(c2.evaluate()) 上遇到编译错误。
我应该如何解决这个问题?
谢谢。
【问题讨论】:
-
您的界面非常混乱。看起来他们不应该扩展
Predicate,只需在他们的方法上有一个Predicate<T>返回类型。或者,您应该选择一个 - either 扩展Predicate<T>或 有一个方法返回Predicate<T>。两者都不是。 -
@LouisWasserman 感谢您的建议。我删除了
extends Predicate
标签: java java-8 java-stream