如果您的 Number 实例从不是Atomic(即 AtomicInteger),那么您可以执行以下操作:
private Integer compare(Number n1, Number n2) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Class<? extends Number> n1Class = n1.getClass();
if (n1Class.isInstance(n2)) {
Method compareTo = n1Class.getMethod("compareTo", n1Class);
return (Integer) compareTo.invoke(n1, n2);
}
return -23;
}
这是因为所有非 Atomic 都Number
实现 Comparable
编辑:
由于反思,这是昂贵的:我知道
编辑 2:
这当然不考虑您想要将小数与整数或其他类似的情况进行比较的情况......
编辑 3:
这假设没有未实现 Comparable 的自定义 Number 后代(感谢@DJClayworth)