基本クラス Base から派生した DerivedOne と DerivedTwo という 2 つのクラスがあります。
私がこれらを持っていると仮定します:
DerivedOne d1;
DerivedTwo d2;
d1 と d2 を比較するとき、d1 が常に小さいことを望みます。つまり、DerivedOne のオブジェクトは DerivedTwo のオブジェクトよりも高い優先度を持つ必要があります。それを行うための最良/最も良い方法は何ですか?
基本クラス Base から派生した DerivedOne と DerivedTwo という 2 つのクラスがあります。
私がこれらを持っていると仮定します:
DerivedOne d1;
DerivedTwo d2;
d1 と d2 を比較するとき、d1 が常に小さいことを望みます。つまり、DerivedOne のオブジェクトは DerivedTwo のオブジェクトよりも高い優先度を持つ必要があります。それを行うための最良/最も良い方法は何ですか?
これが一番いいかどうかはわかりませんがinstanceof
、コンパレータ内で演算子を使用することをお勧めします。
両方のオブジェクトを実装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
}
}
おそらく適切な実装java.util.Comparator<YourSuperClass>
スーパークラスで、変数を優先度として宣言します。
サブクラスのコンストラクターで、それを初期化します。
class A
{
int priority;
}
class Derived1
{
Derived1()
{
priority=1;
}
}
class Derived2
{
Derived2()
{
priority=0;
}
}