`
trydofor
  • 浏览: 147210 次
  • 性别: 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

相关推荐

    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、本身常量值的一个构造方法 ...

    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...

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

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

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

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

    java泛型总结.docx

    例如,List&lt;? extends Number&gt;表示一个可能是Number或其子类类型的列表。 类型推断:在Java 7及以上版本中,可以使用varargs和钻石操作符来推断类型参数。例如,List[] lists = Arrays.asList(new List() {{ add(...

    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;`。这就意味着在运行时无法通过反射获取到泛型信息,因此泛型主要在...

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

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

    enum枚举类的一些代码demo

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

    分数的加减乘除运算Rational Numbers

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

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

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

    Global Optimization Schaeffler 2012

    Global optimization plays an outstanding role in applied mathematics, because a huge number of problems arising in natural sciences, engineering, and economics can be formulated as global optimization...

    java泛型的使用

    7. 多重边界:你可以指定一个类型参数实现多个接口,如`public interface MyInterface&lt;T extends Comparable&lt;T&gt; & Serializable&gt;`,这意味着`T`必须同时实现`Comparable&lt;T&gt;`和`Serializable`接口。 8. 泛型擦除:...

    Java高新技术_java5的枚举的基本应用

    return this.dayNumber - other.dayNumber; } } ``` 这个枚举集包含星期的枚举值,并实现了Comparable接口,允许比较星期的顺序。 总结来说,Java 5引入的枚举类型极大地提高了代码的可读性和安全性,同时提供了...

    传智播客Java教程 Java基础答疑公开课(一)

    1. 泛型的基本概念:解释什么是泛型,以及为什么要使用泛型。这通常会涉及到类型擦除的概念,即泛型在编译后会丢失,但在编译期间可以提供类型检查。 2. 泛型类的定义:如何在类声明中使用尖括号来定义泛型,例如`...

    Java Generic 介绍 (pdf)

    这解释了为什么不能在运行时通过反射获取类的泛型信息。 4. **通配符**:Java泛型支持通配符,如 `?` 和 `&lt;?&gt;`,用于表示对类型参数的限制或无限制。例如,`List&lt;?&gt;` 表示一个未知类型的列表,而 `List&lt;? extends ...

Global site tag (gtag.js) - Google Analytics