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

    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中extends一定是代表继承吗?

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

    分数的加减乘除运算Rational Numbers

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

    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 有界类型程序示例

    为什么使用有界类型?以下是一些关键原因: 1. **类型安全**:通过指定边界,编译器可以在编译时检查类型错误,避免运行时异常,如 `ClassCastException`。 2. **更好的API设计**:有界类型允许我们为泛型类或方法...

    SUN公司Java泛型编程文档

    8. **限制性泛型**:通过泛型约束,可以限制类型参数必须遵循的规则,如`public class Box&lt;T extends Comparable&lt;T&gt;&gt;`,这里规定T必须实现Comparable接口。 9. **类型推断**:自JDK 7起,Java引入了类型推断,使得...

    Java 基础泛型.pdf

    例如,&lt;? extends Number&gt;表示只能使用Number及其子类类型。 4. 泛型类和泛型接口:在类或接口的定义中使用类型参数,从而实现类或接口的通用性。例如,List就是一个泛型类,Comparable就是一个

    java中的泛型样例

    例如,`class Box&lt;T extends Comparable&lt;T&gt;&gt;`表示Box类的类型参数T必须是Comparable接口的实现类。 5. **多类型参数**:泛型不仅可以有一个类型参数,还可以有多个,如`Pair, B&gt;`表示Pair类包含两个不同类型A和B的...

    Java 泛型教程含示例代码

    在上面的例子中,我们使用了有界类型参数 `T extends Comparable&lt;T&gt;`,这意味着类型参数 `T` 只能是 `Comparable&lt;T&gt;` 或者其子类。这样我们可以保证传递给 `maximum` 方法的参数都是可以比较的。 Java 泛型提供了一...

    java 泛型接口示例

    在这个例子中,`GenericInterface`是一个泛型接口,`T`是它的类型参数,`operate()`方法接受一个类型为`T`的参数。 2. **类型参数的约束** 我们还可以对类型参数进行约束,限制它可以是哪些类型的子类。例如,...

    java5泛型新特性 pdf

    extends Number`则限制为Number或其子类。这在处理多种类型的集合时非常有用,如方法参数的定义。 3. **类型擦除**:由于Java的向后兼容性,泛型并未在字节码级别实现,而是通过类型擦除进行处理。这意味着在编译...

    A novel DDS using nonlinear ROM addressing with improved compression ratio and quantization noise

    The nonlinear addressing scheme is used to adaptively vary the number of interpolation points as the slope of the sinusoid changes, leading to a greatly reduced ROM size. The proposed architecture ...

    Reversible Recurrent Neural Networks.pdf

    scheme for storing a small number of bits in order to allow perfect reversal with forgetting. Our method achieves comparable performance to traditional models while reducing the activation memory ...

Global site tag (gtag.js) - Google Analytics