据说当输入参数为空时,compareTo()应该抛出一个NullPointerException异常。但是,我正在实现一个需要将字段与String类型进行比较的类。这些字段不一定是强制性的。我想知道在这种情况下,当参数字符串为空时,int compareTo()会返回什么?
1)当输入为空时应该返回什么?任何非空字符串是否按字典顺序大于或小于空?
和
2)如果这被认为是不好的做法,有没有什么论据?我应该强制用户使用空字符串吗?如果使用空字符串,这不会混淆字段不适用的情况和字段为空的情况吗?如果必须抛出异常,那么除了在手册中警告用户之外,还能做什么?
编辑:我可能不会在这里明确表达自己,但在我正在实施的程序中,可能为空的字符串是所有字段或类,它们不应该为空。换句话说,compareTo()使用的对象不能为空,只能是它们的私有字段。所以在这种情况下,我相信如果我正确实现了compareTo(),它不会违反传递要求,因为具有空字段的类将始终被视为相同。我是对的还是我解释这个错误?
谢谢大家的答案!
如何最好地实现它:http://stackoverflow.com/questions/481813/how-to-simplify-a-null-safe-compareto-implementation – 2015-06-02 12:33:27