gpt4 book ai didi

java - 在java中验证对象的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:27 27 4
gpt4 key购买 nike

我是编程新手。我有一个要验证的对象列表(不是短路,而是按每个对象运行验证规则列表)。

最初我有一个巨大的 if/else 语句,但它看起来不太漂亮。我认为这样的东西会更好:

foreach (object: objects) {
foreach (rule: validationRules) {
try {
rule.validate(object)
} catch {
// Write to log
// Increment counter for rule
}
}
}

我只是不知道如何创建验证规则。我想使用 Java 8 谓词,因为我听说那是我应该使用的,但我不确定如何去做。我想我可能会创建一个包含规则的接口(interface),然后创建一个定义了每个规则以及规则列表的实现。这听起来是解决这个问题的好方法吗?

谢谢!

最佳答案

我认为您可以使用Predicate来实现您的规则。由于 Predicate 是一个抽象方法,因此可以使用简单的 lambda 来实现它,并且您的 validator 可以使用 Predicate 列表来启动。

public final class Validator {
private final List<Predicate<MyObject>> rules;
public final Validator(List<Predicate<MyObject>> rules) {
this.rules = rules;
}

public final validate(MyObject object) {
return rules.stream()
.map(Predicate::test)
.findAny(Boolean.FALSE).isPresent();
}
}

您可以使用您需要的任何 lambda 表达式来初始化该类。

接下来的问题是,您是否想要从多个故障中收集故障,将它们全部报告,或者只是在第一次故障时停止。根据您的情况,有多种选择。您可以使用异常或传递某种失败收集器。

关于java - 在java中验证对象的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34124399/

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