2016-04-12 7 views
-1

Betrachten Sie diese Klasse in Java mit:Wie binäre Operatoren "<" and ">" zum Vergleichen von Objekten in Java zu verwenden?

Foo foo1 = new Foo(someValue); 
Foo foo2 = new Foo(someAnotherValue); 
if (foo1 < foo2) { 
    // do something 
} 

Aber die IDE gibt mir einen Fehler, der ist:

public class Foo implements Comparable<Foo> { 
    private int someValue; 

    @Override 
    public int compareTo(Foo o) { 
     if (this.someValue < o.someValue) { 
      return -1; 
     } else if (this.someValue == o.someValue) { 
      return 0; 
     } else { 
      return 1; 
     } 
    } 
} 

ich, dies zu tun versucht, „Bad Operandentypen für binäre Operation '<' erster Typ: Foo, zweiter Typ: Foo "

Können Sie mir bitte sagen, was los ist?

Vielen Dank im Voraus für Ihre Hilfe,

+3

Sie können nicht. Diese Operatoren können nur mit numerischen Typen verwendet werden. 'Foo' ist kein numerischer Typ. – Savior

+0

Java unterstützt (im Gegensatz zu einigen anderen Sprachen) ** nicht das Überladen von Operatoren. –

Antwort

4

den Comparable Schnittstelle implementiert, ist ein guter erster Schritt, um richtig Ihre Objekte vergleichen zu können. Dies ermöglicht Ihnen jedoch nicht, die Vergleichsoperatoren < und > so zu verwenden, als wären die Operatoren überlastet. Sie müssen nur Ihre compareTo Methode aufrufen.

if (foo1.compareTo(foo2) < 0) {