我有两个类,比如DerivedOne和DerivedTwo,派生自基类Base。
假设我有这些:
DerivedOne d1;
DerivedTwo d2;
当我比较d1和d2时,我希望d1总是更小,换句话说,DerivedOne的对象应该比DerivedTwo的对象具有更高的优先级。最好/最好的方法是什么?
答案 0 :(得分:4)
我不知道这是否是最好的,但我建议在比较器中使用instanceof
运算符。
答案 1 :(得分:2)
在超类中将变量声明为优先级。
在子类构造函数中,初始化它。
class A
{
int priority;
}
class Derived1
{
Derived1()
{
priority=1;
}
}
class Derived2
{
Derived2()
{
priority=0;
}
}
答案 2 :(得分:2)
答案 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
}
}