据说当输入参数为null时,compareTo()应该抛出NullPointerException。但是,我正在实现一个需要将字段与字符串类型进行比较的类。这些字段不必是强制性的。我想知道在这种情况下,
1)当输入为空时我应该返回什么?任何非空字符串在字典上是否应该大于或小于空?
和
2)如果这被认为是不好的做法,是否有任何支持论据?我应该强制用户使用空字符串吗?如果使用空字符串,会不会混淆字段不适用和字段为空的情况?如果必须抛出异常,那么除了在手册中警告用户之外,我还能/应该做什么?
编辑:我可能在这里表达得不够清楚,但是在我正在实现的程序中,可能为空的字符串都是字段或类,不应为空。换句话说,comparedTo() 使用的对象不能为空,只有它们的私有字段可以。所以在这种情况下,我相信如果我正确地实现 compareTo(),它不会违反传递性要求,因为具有空字段的类总是被认为是相同的。我是对的还是我解释错了?
谢谢大家的回答!