java - 当参数字符串为 null 时,int compareTo() 应该返回什么?

标签 java string null nullpointerexception compareto

据说当输入参数为 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/

相关文章:

javascript - 如何在不出现 JSHint 问题的情况下扩展 javascript 字符串?

php - isset 和 !empty 的简写

ruby-on-rails - Rails where 条件为零值

c# - 为什么我可以检查 DateTime 是否为 null,即使它是一个值类型?

java - 在 xml jaxb 中将 null 值表示为空元素

java - J2ME : How to import contact from contact list?

Java:需要查看输入字符串中的每个字符是否与 "alphabet"中的任何字符匹配

java - 从 Jackson 反序列化时如何获取要转换的类型

Java - 创建一个具有指定长度并填充特定字符的新字符串实例。最佳解决方案?

javascript - 为什么 substring 不处理负索引?