栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么java.lang.Number不实现Comparable?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么java.lang.Number不实现Comparable?

值得一提的是以下表达式:

new Long(10).equals(new Integer(10))

始终是

false
,这往往会使每个人在某个时候绊倒。因此,您不仅不能比较任意
Number
s,而且甚至无法确定它们是否相等。

另外,在实原语类型(

float
double
),确定是否两个值相等是棘手的,并且必须在可接受的误差容限内完成。尝试如下代码:

double d1 = 1.0d;double d2 = 0.0d;for (int i=0; i<10; i++) {  d2 += 0.1d;}System.out.println(d2 - d1);

这样您就会有一些小的差异。

回到制作问题

Number

Comparable
。您将如何实施?使用类似的东西
doublevalue()
不会可靠地做到这一点。请记住,
Number
子类型为:

  • Byte
    ;
  • Short
    ;
  • Integer
    ;
  • Long
    ;
  • AtomicInteger
    ;
  • AtomicLong
    ;
  • Float
    ;
  • Double
    ;
  • BigInteger
    ; 和
  • BigDecimal

您能否编写一个

compareTo()
不会分解为一系列if instanceof语句的可靠方法?
Number
实例只有六个可用方法:

  • bytevalue()
    ;
  • shortValue()
    ;
  • intValue()
    ;
  • longValue()
    ;
  • floatValue()
    ; 和
  • doublevalue()

因此,我想Sun做出了(合理的)决定,即

Number
s仅
Comparable
针对自己的实例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609341.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号