2

基本クラス Base から派生した DerivedOne と DerivedTwo という 2 つのクラスがあります。

私がこれらを持っていると仮定します:

DerivedOne d1;
DerivedTwo d2;

d1 と d2 を比較するとき、d1 が常に小さいことを望みます。つまり、DerivedOne のオブジェクトは DerivedTwo のオブジェクトよりも高い優先度を持つ必要があります。それを行うための最良/最も良い方法は何ですか?

4

4 に答える 4

4

これが一番いいかどうかはわかりませんがinstanceof、コンパレータ内で演算子を使用することをお勧めします。

于 2012-11-27T11:57:37.847 に答える
2

両方のオブジェクトを実装Comparable<Derivedparent> interface(または親の実装とサブクラスのオーバーライド)してから、CompareToメソッドに次のように配置します。

public class DerivedOne{

public int compareTo(DerivedParent dp){
 if (dp.instanceOf(DerivedTwo){
  return -1;
 }
 //More comparisons
}
}


public class DerivedTwo{

public int compareTo(DerivedParent dp){
 if (dp.instanceOf(DerivedOne){
  return 1;
 }
 //More comparisons
}
}
于 2012-11-27T12:02:51.283 に答える
2

おそらく適切な実装java.util.Comparator<YourSuperClass>

于 2012-11-27T11:59:37.020 に答える
2

スーパークラスで、変数を優先度として宣言します。

サブクラスのコンストラクターで、それを初期化します。

class A
{
int priority;
}

class Derived1
{
 Derived1()
 {
  priority=1;
 }
}


class Derived2
{
Derived2()
{
priority=0;
}
}
于 2012-11-27T11:58:29.753 に答える