是的,允许
null实例字段没有问题-
只要确保已定义其排序顺序即可。最自然的做法是将其放在所有真实字符串之前或之后,但是您可以在这里做任何事情,只要始终如一。(例如,您可以排序
null为
"null"。)
这是单个成员的示例实现:
class Example implements Comparable<Example> { @Nullable private String member; // TODO: getter, setter, constructor, ... public int compareTo(Example that) { if(this.member == null) if(that.member == null) return 0; //equal else return -1; // null is before other strings else // this.member != null if(that.member == null) return 1; // all other strings are after null else return this.member.compareTo(that.member); }}请注意,Comparable.compareTo()的规范仅具有一个约束
o.compareTo(null)(其行为应类似于
-null.compareTo(o),即抛出NullPointerException),而不涉及
null字段的处理方式(它根本没有提及字段,因此类可以只要确保反对称性,自反性和可传递性,就可以返回任意值)。



