据说当输入参数为 null 时,compareTo() 应该抛出 NullPointerException。但是,我正在实现一个需要将字段与 String 类型进行比较的类。这些字段不必是强制性的。我想知道在这种情况下,
1)当输入为空时应该返回什么?任何非空字符串在字典序上是否应该大于或小于空值?
和
2) 如果这被认为是不好的做法,是否有任何支持论据?我应该强制用户改用空字符串吗?如果使用空字符串,那会不会混淆字段不适用的情况和字段为空的情况?如果必须抛出异常,那么除了在手册中警告用户之外,我还能/应该做什么?
编辑:我在这里可能没有表达清楚,但在我正在实现的程序中,可以为空的字符串都是字段或类,不应该为空。换句话说,compareTo() 使用的对象不能为 null,只是它们的私有(private)字段可以。所以在这种情况下,我相信如果我正确地实现了 compareTo(),它就不会违反传递要求,因为具有空字段的类总是被认为是相同的。我是对的还是我的解释有误?
谢谢大家的回答!
最佳答案
来自 Comparable
的 javadoc
Note that null is not an instance of any class, and e.compareTo(null) should throw a NullPointerException even though e.equals(null) returns false.
关于java - 当参数字符串为 null 时,int compareTo() 应该返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259354/