我有两个无类型对象的集合,我想比较集合中的对象而不知道它们是什么,除了它们实现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 ...
}