首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Number 为啥不 Comparable

2012-12-18 
Number 为何不 Comparable现状 java 5+package java.lang.Numberpublic abstract class Number implements

Number 为何不 Comparable
现状 java 5+

package java.lang.Number  public abstract class Number implements java.io.Serializablepackage java.lang.Integer  public final class Integer extends Number implements Comparable<Integer>


麻烦
* 直觉上 Number应该是可以 Comparable。
* 接受 Comparable<T> 的方法可以使用 Integer,有时 Integer被包成Number,就不能用了。

讨论
这样有啥不好。

public abstract class XNumber<T extends XNumber<T>> implements java.io.Serializable,Comparable<T>{    private static final long serialVersionUID = 1L;}public final class XLong extends XNumber<XLong>  {    private static final long serialVersionUID = 1L;    @Override    public int compareTo(XLong o) {        return 0;    }}
1 楼 trydofor 2011-02-18   http://zh-cn.w3support.net/index.php?db=so&id=480632 2 楼 trydofor 2011-02-18   NOT Comparable Number in JDK
AtomicInteger
AtomicLong

3 楼 trydofor 2011-02-18   http://stackoverflow.com/questions/480632/why-doesnt-java-lang-number-implement-comparable 4 楼 fujohnwang 2011-02-18   float and double don't seem comparable 5 楼 trydofor 2011-02-18   fujohnwang 写道float and double don't seem comparable
but they are 6 楼 whitesock 2011-02-19   public final class Float extends Number implements Comparable<Float> {
    public static final float NaN = 0.0f / 0.0f;
    ...
}

final Float nan1 = new Float(Float.NaN);
final Float nan2 = new Float(Float.NaN);
System.out.println(nan1.equals(nan2)); // ture
System.out.println(nan1.compareTo(nan2)); // 0
System.out.println(Float.NaN == Float.NaN); // false

热点排行