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