关于java:Comparable和(MyClass)null

Comparable and (MyClass)null

说我有

1
2
3
4
5
6
7
8
public class MyClass
     implements Comparable<MyClass>
{
    public int compareTo(MyClass mc)
    {
        //<implementation ommited>...
    }
}

Comparable的文档说,"如果并且仅当e1.CompareTo(e2)==0的布尔值与e1.Equals(e2)对于c类的每一个e1和e2的布尔值相同,那么C类的自然顺序就被认为是与equals一致的。请注意,空不是任何类的一个实例,并且e.CompareTo(空)应该抛出NullPointerException,即使e.Equals(nul)l)返回错误。"

它说"e.CompareTo(空)应该抛出NullPointerException"。

在执行e.compareTo((MyClass)null)时是否还应引发nullpointerException?


是的,它应该抛出NullPointerException。

null在运行时是null,不管您在编译时给它什么类型。

您的代码无法判断您是调用了e.compareTo((MyClass)null)还是e.compareTo(null)。这是一样的。


如果你写e.compareTo(null)e.compareTo((MyClass)null)有什么区别?

这两个代码都是同一个,与null is null. Even if you cast it to any type, it will be null only相同。