在实现对象的compareTo方法时,如果对象有多个属性,在比较时往往会形成一个层级if,即高优先级属性相同时,再比较次优先级的属性。guava的ComparisonChain工具提供了解决上述对象比较的链式调用方法,使用起来也很方便;
private int grade;
private String name;
public Product(int grade, String name) {
this.grade = grade;
this.name = name;
}
@Override
public int compareTo(Product product) {
return ComparisonChain.start()
.compare(grade, product.grade)
.compare(name, product.name)
.result();
}
Product product1 = new Product(10, "b");
Product product2 = new Product(10, "a");
Assert.assertTrue(product1.compareTo(product2) > 0);