比较从同一个基础派生的不同类的对象

时间:2012-11-27 11:55:09

标签: java inheritance comparison

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

假设我有这些:

DerivedOne d1;
DerivedTwo d2;

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

class A
{
int priority;
}

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


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

答案 2 :(得分:2)

最有可能正确实施java.util.Comparator<YourSuperClass>

答案 3 :(得分: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
}
}