`
trydofor
  • 浏览: 150465 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Number 为何不 Comparable

阅读更多
现状 java 5+
package java.lang.Number
  public abstract class Number implements java.io.Serializable
package 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;
    }
}
分享到:
评论
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
5 楼 trydofor 2011-02-18  
fujohnwang 写道
float and double don't seem comparable

but they are
4 楼 fujohnwang 2011-02-18  
float and double don't seem comparable
3 楼 trydofor 2011-02-18  
http://stackoverflow.com/questions/480632/why-doesnt-java-lang-number-implement-comparable
2 楼 trydofor 2011-02-18  
NOT Comparable Number in JDK
AtomicInteger
AtomicLong

1 楼 trydofor 2011-02-18  
http://zh-cn.w3support.net/index.php?db=so&id=480632

相关推荐

    492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar

    `Comparable`接口是为那些需要比较的对象设计的。当你创建一个类,并希望它的实例能够在集合(如`ArrayList`或`TreeSet`)中按照特定的顺序排列时,你可以让该类实现`Comparable`接口。通过实现`compareTo`方法,你...

    Multi-digit Number Recognition from Street View Imagery using DCNN

    Recognizing arbitrary multi-character text in unconstrained natural ...operating thresholds, the performance of the proposed system is comparable to, and in some cases exceeds, that of human operators.

    Rational Numbers

    – 由于有理数与整数、浮点数有许多共同特征,并且Number类是数字包装的根类,因此,把有理数类Rational定义为Number类的一个子类是比较合适的。由于有理数是可比较的,那么Rational类也应该实现Comparable接口。+下...

    java包装类相关方法.txt

    前面6个包装类是与数字相关的 父类:Number Boolean、Character 父类:Object 8个包装类实现的接口:Serializable ,Comparable 3、构造方法 前面6个包装类、Boolean 1、本身常量值的一个构造方法 ...

    bigNumber:用于将BigDecimal和BigInteger结合在一起的Java的bignum库

    然而,在实际应用中,我们可能需要同时处理这两种类型的大数,这时`bigNumber`库就显得尤为重要。 `bigNumber`库是一个Java库,它的设计目标是将`BigInteger`和`BigDecimal`的功能集成在一起,使得开发者能够更方便...

    java有理分数运算

    下图描述了 Rational 类与 Number 类和 Comparable 接口的继承关系: ``` +---------------+ | Number | +---------------+ | | v +---------------+ | Rational | +---------------+ | | v +--------...

    ArraySort排序

    public class MyNumber implements Comparable&lt;MyNumber&gt; { private int value; // 构造函数、getters和setters略... @Override public int compareTo(MyNumber other) { return Integer.compare(this.value...

    java基本数据类型与其封装类.doc

    - `Byte` 封装类,继承自`Number`类,实现了`Comparable&lt;Byte&gt;`接口。提供了`parseByte()`和`toString()`等方法,方便在字节与字符串之间转换。 3. **Character VS char** - `char` 基本数据类型,占2字节,用于...

    JDK1.5泛型.rar

    6. **边界限制**:可以为类型参数设置边界,如`public class Box&lt;T extends Comparable&lt;T&gt;&gt; {...}`,这样T就必须是Comparable的实例。 7. **类型擦除**:Java的泛型是通过类型擦除实现的,这意味着在运行时,所有的...

    Java泛型总结(2)进阶篇

    这解释了为什么我们不能在运行时通过反射检查一个对象是否属于某个泛型类型。 4. 泛型方法 泛型方法是在方法级别声明的,它们有自己的类型参数,可以独立于所在类的类型参数。例如,`Collections.sort()` 方法就是...

    Java泛型编程最全总结

    由于Java的虚拟机不支持泛型,所以在编译后,所有的泛型信息都会被擦除,替换为具体的类型,如`ArrayList&lt;String&gt;`会被转化为`ArrayList&lt;Object&gt;`。这就意味着在运行时无法通过反射获取到泛型信息,因此泛型主要在...

    用 Jsp 的 Session 机制编写的购物车程序.txt

    - 购物车不为空,遍历购物车中的商品,判断新商品是否已存在于购物车中。 - 如果已存在,则给出提示信息。 - 如果不存在,则添加到购物车列表。 #### 四、总结 本程序通过使用`Session`机制和自定义的`Goods`类...

    Java中extends一定是代表继承吗?

    "Java中extends一定是代表继承吗?" extends关键字在Java中是一个...我们还探讨了泛型中的extends和super关键字,以及为什么Java不新建一个“is”关键字。希望本文的内容对大家的学习或者工作具有一定的参考学习价值。

    enum枚举类的一些代码demo

    虽然枚举不能直接继承其他类,但它们可以实现一个或多个接口,从而扩展功能。例如,我们可以创建一个实现了Comparable接口的WeekDay枚举: ```java public enum WeekDay implements Comparable&lt;WeekDay&gt; { // ....

    java 泛型基础简单事例

    在实际使用时,我们可以将 `T` 替换为任何具体的类型,例如 `String`、`Integer` 或自定义的类。 1. **泛型类**:泛型类允许我们在类中定义类型参数。例如,一个简单的泛型栈可以定义如下: ```java public class...

    Java泛型梳理.

    #### 二、为什么使用泛型? 1. **增强编译时的类型检查**:通过使用泛型,可以在编译阶段捕获到类型错误,避免了运行时可能出现的类型转换异常。这种做法提高了程序的安全性和稳定性。 例如,在没有使用泛型的...

    分数的加减乘除运算Rational Numbers

    – 由于有理数与整数、浮点数有许多共同特征,并且Number类是数字包装的根类,因此,把有理数类Rational定义为Number类的一个子类是比较合适的。由于有理数是可比较的,那么Rational类也应该实现Comparable接口。

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    **判断是否为空(empty)方法**: ```java public boolean empty() { return elements.isEmpty(); } ``` **pushAll方法**: ```java public void pushAll(Collection&lt;? extends E&gt; src) { for (E e : src) { ...

    实例188 -泛型化接口与最大值

    例如,我们可以定义一个名为`MaxCalculator&lt;T&gt;`的泛型接口,其中`T`为类型参数,表示接口中的方法将处理的任意类型。接口中可以有一个`findMax`方法,用于找到传入集合中的最大元素: ```java public interface ...

Global site tag (gtag.js) - Google Analytics