如何比较通用实现中的两个对象?

时间:2011-09-27 15:03:32

标签: java generics

我有一个通用类,它将是LongFloatIntegerString类型。在NumberLongFloatInteger)的情况下,我想比较其中两个以查看哪个更大或小。有可能吗?

3 个答案:

答案 0 :(得分:2)

可以使用中等复杂的Comparator实现并自由使用'instanceof'关键字。

http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html

答案 1 :(得分:1)

最简单的方法是在子类中实现Comparable接口。

答案 2 :(得分:1)

如果您只需要数字,只需将它们作为具有相同数据类型的“值”进行比较(java.lang.Number类提供适当的方法)。所以你可以这样做:

Double.compare( number1.doubleValue(), number2.doubleValue() )

其中number1number2是不同类型的数字。

Comparable接口由所有数字原语包装器实现,但它们只能比较相同类型的数字。例如Integer实现Comparable<Integer>,因此compareTo方法不接受其他数字类型。