Bonjour à tous,
Je ne comprends pas un bogue trouvé par findBug.
Voici mon code :
findBug dit «Test defines compareTo(Object) and uses Object.equals()».
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Test implements Comparable<Object> { int attribut; public int compareTo(Object o) { return attribut - ((Test) o).attribut; } }
Voici la description du bogue sur le site de findBug*:
http://findbugs.sourceforge.net/bugD..._OBJECT_EQUALS
Pour moi la conditionest bien respectée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part (x.compareTo(y)==0) == (x.equals(y))
Est-ce une erreur de findBug? Car il retourne le même message sur le code du livre Pensez en Java*:
http://bruce-eckel.developpez.com/li...chap=10&page=2
Merci pour vos réponses…
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 //: c09:CompType.java // Implémenter Comparable dans une classe. import com.bruceeckel.util.*; import java.util.*; public class CompType implements Comparable { int i; int j; public CompType(int n1, int n2) { i = n1; j = n2; } public String toString() { return "[i = " + i + ", j = " + j + "]"; } public int compareTo(Object rv) { int rvi = ((CompType)rv).i; return (i < rvi ? -1 : (i == rvi ? 0 : 1)); } private static Random r = new Random(); private static int randInt() { return Math.abs(r.nextInt()) % 100; } public static Generator generator() { return new Generator() { public Object next() { return new CompType(randInt(),randInt()); } }; } public static void main(String[] args) { CompType[] a = new CompType[10]; Arrays2.fill(a, generator()); Arrays2.print("before sorting, a = ", a); Arrays.sort(a); Arrays2.print("after sorting, a = ", a); } } ///:~
Partager