测试两个 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" 比较苹果和石头的方法并不容易。
我在 Java 中有两个值,它们可以是任何类型(基元除外),因此它们都是 Object 类型。我想看看有没有实现 Comparable,如果有,调用 compareTo() 方法比较它们。
但是,由于 Comparable 是通用接口,因此两个对象可以实现,例如 Comparable 和 Comparable,并且不能相互比较。
有什么方法可以判断两个Object是否具有可比性?
当我想到这一点时,我意识到可能有更好的方法来执行此操作,涉及使用对象以外的某种类型,但此时,我只是对我遇到的问题感到好奇呈现。
通过反射可以找到Comparable接口的泛型。
其他懒惰的选择是调用它并捕获 ClassCastException :)
您可以做的是:
- 您可以使用 Class.isAssignableFrom() 来确定您的两个对象 X 和 Y 是否属于 "compatible" 类
- 然后您可以检查它们是否实际实现了 Comparable 接口
然后假设在两个对象之一上调用该方法实际上会产生合理的结果。
但老实说,我同意这里的评论:这听起来像是一个 奇怪 的想法; 感觉 你应该退后一步,寻找更好的方法来解决你的真实问题。试图找到 "generic" 比较苹果和石头的方法并不容易。