我有两个类,假设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
}
}