Ich schreibe ein kleines Skript, um Pixel eines Bildes zu bekommen und es in eine ArrayList, und ich erstelle eine Klasse, die diese Werte enthält.Vergleichen Sie die gleichen Objekte in Java
Hier ist ein Teil meines Code:
int arrC[] = {255, 0, 0};
Color red = new Color(arrC),
red2 = new Color(arrC);
if(!red.equals(red2)) System.out.print("It's not the same color !");
und die Klasse Farbe:
class Color {
private int RED;
private int GREEN;
private int BLUE;
private String HEXA;
public Color(int RGBColors[]) throws ColorException {
if(RGBColors.length == 3) {
for(int rgbcolor : RGBColors) {
HEXA = String.format("#%02x%02x%02x", RGBColors[0], RGBColors[1], RGBColors[2]);
}
}else {
throw new ColorException("Erreur : Number of the value incorrect. 3 excepted not: " + RGBColors.length);
}
}
public Color(int hexacolor) {
System.out.println(hexacolor);
}
/* Getter & Setters */
public int getRED() {
return this.RED;
}
//...
}
Aber ich verstehe nicht, warum Variable rot sind gleich nicht mit den Variablen red2 auch wenn sie die gleichen Eigenschaften. Wie kann das gehen?
Weil Sie nicht umgesetzt haben 'equals', so vergleicht er die Referenz, die anders ist. –
Sie müssen die 'Object.equals' Methode implementieren (und sollten dasselbe für' hashCode' tun, wenn Sie Instanzen innerhalb von 'Map's verwenden), wenn Sie alle Eigenschaften vergleichen. – qqilihq
Verwandte: http://stackoverflow.com/q/27581/3182664 (und viele anderen Fragen) – Marco13