有用信息:
ide:智能jdk:8u271
我有一个警告,我不明白,也不知道如何解决它。警告:
Comparator does not return 0 for equal elements
警告突出显示
(a, b)
在这行代码中。
private final Comparator<Entity> renderSorter = (a, b) -> {
if (a.getY() + a.getHeight() < b.getY() + b.getHeight())
return -1;
return 1;
};
警告的含义是什么?如何解决?
2条答案
按热度按时间6mzjoqzu1#
必须添加一个case来检查两个值是否相等比较器应该返回0。现在它会回来的
-1
或者1
.这对你有好处。将比较的责任委托给integer类compare方法。
iyr7buue2#
合同
Comparator
界面显示:比较其两个参数的顺序。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。
这个警告告诉您comparator从不返回零,我假设您可以从检查代码中看到这一点。
在比较器的意义上,当两个实体对象相等时,可以通过使比较器返回零来解决警告,而不是实际检查两个对象是否相等。