2

我有两个类,比如说 DerivedOne 和 DerivedTwo,它们派生自基类 Base。

假设我有这些:

DerivedOne d1;
DerivedTwo d2;

当我比较 d1 和 d2 时,我希望 d1 总是更小,换句话说,DerivedOne 的对象应该比 DerivedTwo 的对象具有更高的优先级。最好/最好的方法是什么?

4

4 回答 4

4

我不知道这是否是最好的,但我建议instanceof在比较器中使用运算符。

于 2012-11-27T11:57:37.847 回答
2

在超类中声明一个变量为优先级。

在子类构造函数中,初始化它。

class A
{
int priority;
}

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


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

很可能是正确实施java.util.Comparator<YourSuperClass>

于 2012-11-27T11:59:37.020 回答
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 回答