读书人

Number 为啥不 Comparable

发布时间: 2012-12-18 12:43:41 作者: rapoo

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

读书人网 >编程

热点推荐