我有一个通用类,它将是Long
,Float
,Integer
和String
类型。在Number
(Long
,Float
和Integer
)的情况下,我想比较其中两个以查看哪个更大或小。有可能吗?
答案 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() )
其中number1
和number2
是不同类型的数字。
Comparable
接口由所有数字原语包装器实现,但它们只能比较相同类型的数字。例如Integer
实现Comparable<Integer>
,因此compareTo
方法不接受其他数字类型。