1
30
一个有效的(但脆弱的)解决方案是这样的:
尽管如此,它仍然不太好,因为它依赖于
编辑,七年后:
正如评论中指出的,有(至少?)三个特例
|
2
30
这应该适用于所有扩展数字的类,并且可以与它们自己进行比较。通过添加&comparable,您可以删除所有类型检查,并在与sarmun answer比较时免费提供运行时类型检查和错误引发。
|
3
12
一个可能对你有用的解决方案是不使用
这允许您编写适用于所有可比较数字的代码。静态类型和优雅。 这与Bennyboy提出的解决方案相同,但它适用于各种方法,不仅适用于Comparator类。
|
4
11
在问了一个 similar question 我研究了这里的答案,得出了以下结论。我认为它比Gustafc给出的解决方案更有效、更可靠:
|
5
5
最“泛型”的Java原始数是双份的,所以简单地使用
在大多数情况下应该足够了,但是…在将数字转换为双精度时,这里有一些微妙的问题。例如,使用BigInteger可以执行以下操作:
结果:
虽然我认为这是非常极端的情况,但这是可能的。不-没有通用的100%精确的方法。数字接口没有像exactValue()这样的方法转换为某种类型,能够完美地表示数字而不丢失任何信息。 事实上,拥有这样完美的数字通常是不可能的——例如,用有限空间的任何算法表示数字pi都是不可能的。 |
6
2
这应该适用于所有扩展数字的类,并且可以与它们自己进行比较。
|
7
2
注:
这个
编辑
:如评论中所述,您(始终)必须检查bigdecimal和朋友。但它们提供了
|
8
1
你可以简单地使用
|
9
1
这个怎么样?当然不是很好,但它处理所有必要的案件提到。
|
10
0
假设您有如下方法:
如果知道只有整数、long和double可以作为参数传递,则可以将方法签名更改为:
这将适用于字节、短、整数、长和双精度。 如果假定可以传递biginteger或bigdecimal或float和double的组合,则无法创建一个通用方法来比较所有这些类型的参数。 |
11
0
如果您的数字实例是 从未 原子(即原子整数),然后可以执行如下操作:
这是因为所有的非原子
编辑 : 这是因为反思而付出的代价:我知道 编辑2 : 当然,这不适用于将小数与整数或其他类似的情况。 编辑3 : 这假定没有自定义定义的数字后代不实现可比较(谢谢@djclayworth) |
flash · 按一个字段的降序对对象排序 6 年前 |
DrJessop · 理解类似cast的问题 6 年前 |
boppa · 不兼容的类型:节点无法转换为可比较(当作为参数传递时) 7 年前 |
Olivier10178 · 无法使可比较接口工作 8 年前 |
Mushy · Java可与泛型类型相比较 10 年前 |