测试两个 Java 对象是否可以相互比较

Testing if two Java Objects can be compared to each other

我在 Java 中有两个值,它们可以是任何类型(基元除外),因此它们都是 Object 类型。我想看看有没有实现 Comparable,如果有,调用 compareTo() 方法比较它们。

但是,由于 Comparable 是通用接口,因此两个对象可以实现,例如 Comparable 和 Comparable,并且不能相互比较。

有什么方法可以判断两个Object是否具有可比性?

当我想到这一点时,我意识到可能有更好的方法来执行此操作,涉及使用对象以外的某种类型,但此时,我只是对我遇到的问题感到好奇呈现。

通过反射可以找到Comparable接口的泛型。

其他懒惰的选择是调用它并捕获 ClassCastException :)

您可以做的是:

  • 您可以使用 Class.isAssignableFrom() 来确定您的两个对象 X 和 Y 是否属于 "compatible" 类
  • 然后您可以检查它们是否实际实现了 Comparable 接口

然后假设在两个对象之一上调用该方法实际上会产生合理的结果。

但老实说,我同意这里的评论:这听起来像是一个 奇怪 的想法; 感觉 你应该退后一步,寻找更好的方法来解决你的真实问题。试图找到 "generic" 比较苹果和石头的方法并不容易。