gpt4 book ai didi

java - 比较 Java 子类

转载 作者:行者123 更新时间:2023-11-30 09:36:30 25 4
gpt4 key购买 nike

我的应用可能会比较同一抽象父类的任意两个子类的实例。我希望它们按如下方式进行比较:

  1. 如果是不同的子类,则由父类进行比较。
  2. 如果是同一个子类,则由子类进行比较。

类将通过 TreeMap 进行比较,因此我可以选择使用 Comparator 或实现 Comparable(或两者?)。

我可以想到几种方法来做到这一点,但它们都有点困惑且容易出错。有没有优雅的解决方案?

提前致谢...

最佳答案

你可以试试

// Parent:
@Override
public final int compareTo(Parent other)
{
if (getClass() == other.getClasss()) {
// same type -> pass it to subclass implementation
return this.subCompare(other)
}

// different type -> do the comparison here based on Parent's logic
// ...
}

protected int subCompare(Parent other)
{
// this should not be called directly
return 0; // could throw an exception here too
}

// Derived1:
@Override
protected int subCompare(Parent other)
{
// this method is only called from Parent
Derived1 other1 = (Derived1) other;
// do the comparison based on Derived1's logic
}

其他派生类也是如此

关于java - 比较 Java 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com