【发布时间】:2017-10-27 21:04:34
【问题描述】:
我对编程比较陌生,过去两天我一直在想如何制作一个由其他谓词的自定义列表组成的谓词。所以我想出了某种解决方案。下面是一个代码 sn-p 应该给你一个想法。因为我只是根据阅读各种文档来编写它,所以我有两个问题:1/这是一个好的解决方案吗? 2/对于这个问题还有其他推荐的解决方案吗?
public class Tester {
private static ArrayList<Predicate<String>> testerList;
//some Predicates of type String here...
public static void addPredicate(Predicate<String> newPredicate) {
if (testerList == null)
{testerList = new ArrayList<Predicate<String>>();}
testerList.add(newPredicate);
}
public static Predicate<String> customTesters () {
return s -> testerList.stream().allMatch(t -> t.test(s));
}
}
【问题讨论】:
-
逻辑是对的,但设计很糟糕。为什么不只使用一个以 List
> 作为参数并返回聚合谓词的方法?使用可变的静态字段真的很难看,并且使 Tester 类无法使用。 -
@JBNizet 你是对的 - 它更容易。而且更漂亮。我对设计还不太了解。
标签: java lambda java-8 java-stream predicate