gpt4 book ai didi

java - 如何迭代谓词列表

转载 作者:行者123 更新时间:2023-12-03 00:59:23 24 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,并且我们有一个带有一组功能标志的 application.yml

featureFlag:
featureOne:true
featureTwo:true
featureThree:true
featureFour:false

然后这个文件被这个类读取

@Configuration
@ConfigurationProperties(prefix="featureFlag")
public class FeatureFlag{

private Boolean featureOne;
private Boolean featureTwo;
private Boolean featureThree;
private Boolean featureFour;
/*The predicates based on the feature flags*/

private Predicate<FeatureFlag> isFeatureFlagOneEnabled = featureFlag.isFeatureOne();
private Predicate<FeatureFlag> isFeatureFlagTwoEnabled = featureFlag.isFeatureTwo();
private Predicate<FeatureFlag> isFeatureFlagThreeEnabled = featureFlag.isFeatureThree();
private Predicate<FeatureFlag> isFeatureFlagFourEnabled = featureFlag.isFeatureFour();
}

我想传递实际的谓词并迭代它们中的每一个,但我想知道我是否可以执行一个通用函数,我传递谓词列表及其要测试的值,以及如果它们全部为真,则该函数返回 true 否则 false

然后在这个类中添加一些这样的代码,因为我想按需生成这个列表,例如我有一个客户x购买featureOne和featureTwo,在这个例子中我创建一个这样的列表

Set<Predicate<FeatureFlag>> rulesForClientX = new HashSet<>();
rulesForClientX.add(isFeatureFlagOneEnabled);
rulesForClientX.add(isFeatureFlagTwoEnabled);

然后我想为该客户端创建一个特定的逻辑,并将之前创建的谓词列表传递给它,但我认为我需要这样的东西

Function<List<Predicate<FeatureFlag>>, Boolean> iteratePredicates = (predicates) -> { 
//test each predicate and return true if all of them are true otherwise return false
}

最佳答案

您可以创建一个接受 Set<Predicate<FeatureFlag>> 的方法和值,然后您可以流式传输谓词集并使用 allMatch

public boolean testPredicates(Set<Predicate<FeatureFlag>> predicates, Integer value) {
return predicates.stream().allMatch(pre->pre.test(value));

}

关于java - 如何迭代谓词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60121926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com