|
11
|
| Trick · 技术社区 · 16 年前 |
|
|
1
17
这个错误意味着你没有重写
要修复FindBugs检查,请重写
|
|
|
2
6
它告诉你compareTo()和equals()有可能不一致。他们真的不应该不同意。 equals()方法是从java.lang.Object继承的,默认情况下,它会检查两个对象是否相同 实例 . 您的compareTo方法是比较基于tableName和fkFieldName的对象。因此,您可能会发现自己处于这样一种情况:compareTo表示两个对象是相同的(因为tableName和fkFieldName匹配),而equals表示它们是不同的(因为它们是不同的实例)。 有一些javaapi依赖于compareTo和equals的一致性;这是java语言的一部分,被认为是核心语言契约。理想情况下,实现一个equals(和hashcode)方法来检查基于tableName和fkFieldName的相等性。 |
|
|
3
4
一般来说,当且仅当equals返回true时,compareTo的值才应返回零。如果违反了这一点,则在PriorityQueue之类的类中会发生奇怪且不可预测的故障。” 强烈建议但不是严格要求(x.compareTo(y)==0)=(x.equals(y)) 另一个例子是树集。它通过调用compareTo来实现相等性检查,如果compareTo实现与equals不一致,则会使树集违反Set接口的约定,从而导致程序故障。 |
|
|
4
2
在SqlFixer.ForeignKeyConstraint中也尝试过重写equals方法吗? 我相信这个警告的基础是,如定义中所述,如果你覆盖compareTo而不是equals,奇怪的事情就会发生。 有关更多信息,请访问 Joshua Bloch's Effective Java, 2nd Edition . 第12项更深入地讨论了实现可比性的细节和一些需要注意的事项。 |
|
|
5
1
|
|
|
Dantes · 如何使用CompareTo()和TreeSet() 8 年前 |
|
|
Ash Dean · 比较多个字符串并排序答案 11 年前 |
|
|
Baklap4 · 在java中比较字符串compareTo 12 年前 |