2016-04-12 7 views
-1

はJavaでこのクラスを持つ考えてみましょう:バイナリ演算子 "<" and ">"を使用してJavaでオブジェクトを比較する方法は?

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; 
     } 
    } 
} 

私はこれを実行しようとしました:

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

しかし、IDEは私にあるエラー与えている: 『<』バイナリ操作のための「悪いオペランドの型を最初のタイプ:Foo、2番目のタイプ:Foo "

どうか間違っていると教えてください。あなたの助けを事前に

おかげで、Comparableインタフェースを実装

+3

できません。これらの演算子は数値型でのみ使用できます。 'Foo'は数値型ではありません。 – Savior

+0

Java(他の言語とは異なります)では、演算子のオーバーロードをサポートしていません**。 –

答えて

4

は正しくオブジェクトを比較することができることに良い最初のステップです。ただし、演​​算子がオーバーロードされているかのように比較演算子<>を使用することはできません。 compareToメソッドに電話するだけです。

if (foo1.compareTo(foo2) < 0) { 
関連する問題