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

时间:2017-02-05 20:05:42

标签: java generics polymorphism comparable

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

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

有没有办法确定两个物体是否相互可比?

正如我已经想到的那样,我已经意识到可能有更好的方法来做这个涉及使用除Object之外的某些类型,但在这一点上,我只是对我提出的问题感到好奇。

2 个答案:

答案 0 :(得分:4)

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

其他懒惰选项只是调用它并捕获ClassCastException:)

答案 1 :(得分:2)

你能做的是:

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

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

但老实说,我在这里的评论:这听起来像一个奇怪的想法;而感觉就像你应该更好地退后一步,寻找更好的方法来解决你的真正的问题。试图找到如何比较苹果和岩石的“通用”方法并不容易。