Object Method
static boolean equal(Object a, Object b):内部其实先对a进行非空判断,然后在使用equals()方法
当使用对象的equals()方法时,如果对象为null则会抛出NullPointerException异常;所以推荐使用Objects.equal(Object a, Object b)方法判断两个对象是否相等
Objects.equal("a", null); // false Objects.equal(null, "a"); // false Objects.equal("a", "a"); // true Objects.equal("a", "b"); // false
hashCode
为一个或多个对象生成hashCode
toString
一个书写良好的toString方法在调试的时候将会非常有用。
// Returns "ClassName{x=1}" MoreObjects.toStringHelper(this) .add("x", 1) .toString(); // Returns "MyObject{x=1}" MoreObjects.toStringHelper("MyObject") .add("x", 1) .toString();
compare / compareTo
自己书写的compareTo()方法,在需要比较的属性多的时候,将会变得非常混乱、难以调试。
所以推荐使用ComparisonChain类,链式的调用比较各个属性。
class Person implements Comparable<Person> { String name = "foo"; int age = 21; @Override public int compareTo(Person o) { return ComparisonChain.start() .compare(name, o.name) .compare(age, o.age) .result(); } }