示例
public int compareTo(Foo that) { return ComparisonChain.start() .compare(this.aString, that.aString) .compare(this.anInt, that.anInt) .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast()) .result(); }
ComparisonChain是一个设计很巧妙的chain类,从start方法开始,就返回一个ACTIVE状态的ComparisonChain实现类,该类适配各类的比较方法,当compare方法返回0时,则继续返回ACTIVE状态的ComparisonChain实现类,继续后续的compare。直到compare不返回0后,他就返回一个inactive状态的ComparisonChain实现类,该类的所有compare方法不做任何比较,只返回自身,并且result就是最后一个ACTIVE状态的ComparisonChain实现类compare的结果