JAVA:可以在未知类型的对象上调用compareTo()吗?

时间:2016-05-19 15:21:10

标签: java

我有两个无类型对象的集合,我想比较集合中的对象而不知道它们是什么,除了它们实现Comparable。我想做点什么:

int compareThings(Object o1, Object o2) {
   if (!(o1 instanceof Comparable) || !(o2 instanceof Comparable)) {
      throw ...
   }
   if (o1.getClass() != o2.getClass()) {
      throw ...
   }
   return ((Comparable)o1).compareTo(o2);
}

这可能吗?或者我需要知道每个对象可能是什么,例如:

int compareThings(Object o1, Object o2) {
   if (o1 instanceof T1 && o2 instanceof T1) {
      return ((T1)o1).compareTo((T1)o2);
   }
   else if (o1 instanceof T2 && o2 instanceof T2) {
      return ((T2)o1).compareTo((T2)o2);
   }
   else if (o1 instanceof T3 && o2 instanceof T3) {
      return ((T3)o1).compareTo((T3)o2);
   }
   throw ...
}

0 个答案:

没有答案