gpt4 book ai didi

java - 如何使用 ComparisonChain 进行验证?

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

我正在使用 com.google.common.collect.ComparatorChain 为不同的对象实现自定义比较器。

现在,以下测试失败了,但为什么?

@Test
public void chainTest() {
ComparisonChain comparator = ComparisonChain.start()
.compare("a", "a");
assertTrue(comparator.result() == 0);
comparator.compare("a", "b");
assertTrue(comparator.result() != 0); //fails with AssertionError
}

Afaik 第二个结果实际上应该是 != 0 作为 a != b?

我当然可以像这样重新分配比较器:比较器 = comparator.compare("a", "b");

但这会丢弃在重新分配之前获得的任何结果。

最佳答案

您忽略了 comparator.compare("a", "b") 的返回值。调用 compare() 不会改变现有比较的状态 - 它返回与正确状态的比较(可能相同也可能不同 - 只要比较结果为 0 ,状态将是“Activity 的”)。

更改代码以使用:

comparator = comparator.compare("a", "b");

它应该可以工作。

这个想法是,你只是不断地将比较传递给链,一旦它知道整体结果(即当其中一个不为零时),它就会忽略它们。例如:

import com.google.common.collect.ComparisonChain;

public class Test {
public static void main(String[] args) {
int result = ComparisonChain.start()
.compare("a", "b") // Chain terminates here
.compare("a", "a") // Irrelevant
.result();
System.out.println(result); // < 0 (e.g. -1)
}
}

关于java - 如何使用 ComparisonChain 进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28475342/

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