比较派生自同一基的不同类的对象



我有两个类,假设DerivedOne和DerivedTwo,派生自基类Base。

假设我有这些:

DerivedOne d1;
DerivedTwo d2;

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

我不知道

这是否是最好的,但我建议使用比较器内的instanceof运算符。

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

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

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

class Derived2
{
Derived2()
{
priority=0;
}
}

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

使两个对象都实现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
}
}

最新更新