2016-11-02 15 views
-2
public class Glasses { 
    String manufacturer; 
    int price; 
    String type; 

    Glasses() { 
    } 

    Glasses(String prd, int pr) { 
     manufacturer = prd; 
     price = pr; 
    } 

    Glasses(String prd, int pr, String t) { 
     manufacturer = prd; 
     price = pr; 
     type = t; 
    } 

    public static void Compare() { 

    } 
} 

これは私のコードで、iは物体glasses1(レイバン、200、乗)とglasses2(中国、100、四捨五入)を初期化し、私はそれらをしたいように、私は2つのメガネを比較したいオブジェクトの比較比較される。どうやってやるの?Javaは2クラスが

+0

あなたは彼らのために正確に何を比較したいですか? –

+0

ああ、申し訳ありませんが、私は、メガネ1はメーカーXからのもので、価格はY、タイプZ、メガネ2が製造元Aなどであることを欲しい。 –

答えて

0

booleanが等しければ、これを返すクラスObjectからメソッドequals(Object)を上書きすることができます(これらのインスタンスを等しく定義する必要がある場合は、このメソッド内で自分で定義することができます)。

ソートされたマップでクラスをソートできるようにするには、インターフェイスComparableとメソッドint compare(Object)を実装できます。例えば

:メガネオブジェクトは、他のメガネのオブジェクトよりも「小さい」または「大きな」の場合、私はあなたのロジックを知らないので

@Override 
public int compareTo(Glasses other) { 
    if (equals(other)) { 
     return 0; 
    } else { 
     //FIXME: when is a Glasses object smaller then an other Glasses object?? 
     return 0; 
    } 
} 

@Override 
public boolean equals(Object o) { 
    boolean equal = false; 
    if (o instanceof Glasses) { 
     Glasses other = (Glasses) o; 
     equal = true; 
     equal &= (manufacturer == null && other.manufacturer == null) || (manufacturer != null && manufacturer.equals(other.manufacturer)); 
     equal &= price == other.price; 
     equal &= (type == null && other.type == null) || (type != null && type.equals(other.type)); 
    } 
    return equal; 
} 

compareメソッドの実装はバグがあります。たぶんequalsメソッドが必要なのでしょうか?

追加: ザ・メソッドは少し小さいが、理解することが、多分少し難しく行うことができます等しい(あなたがの取扱いを知っていれば、実際に依存 - 演算子「を?」):

@Override 
    public boolean equals(Object o) { 
     boolean equal = false; 
     if (o instanceof Glasses) { 
      Glasses other = (Glasses) o; 
      equal = true; 
      equal &= manufacturer == null ? other.manufacturer == null : manufacturer.equals(other.manufacturer); 
      equal &= price == other.price; 
      equal &= type == null ? other.type == null : type.equals(other.type); 
     } 
     return equal; 
    } 
+0

どうすればいいですか?私はJavaの初心者です –

+0

私のオリジナルの投稿にコード例を追加しました。 –

+0

私は、equals内の最初のif文が '!= null'ではなく' instanceof Glasses'をチェックしなければならないということを間違えました。申し訳ありません、私は今修正しました。 –