Objects
在Guava的com.google.common.base
包中
JDK7已经把Objects收录在了java.util.Objects
里, 现在可以直接用啦
看实现代码, 不用担心空指针了
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
首先hashCode(Object o)
不用担心空指针
public static int hashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
另外还有个hash(Object... values)
方法非常好用,可以传多个对象进去得到hash值, 比如可以这样用:
Objects.hashCode(field1, field2, ..., fieldn)
来个例子:
Objects.hash("a", "b"); // 4066
Objects.hash("b", "a"); // 4096
有两个方法toString(Object o)
和toString(Object o, String nullDefault)
, 代码如下:
// 如果传null则返回字符串"null"
public static String toString(Object o) {
return String.valueOf(o);
}
// 这个可以自己指定为null时返回什么
public static String toString(Object o, String nullDefault) {
return (o != null) ? o.toString() : nullDefault;
}
还有两个判空方法
// 直接抛空指针异常
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
// 可以自定义异常描述
public static <T> T requireNonNull(T obj, String message) {
if (obj == null)
throw new NullPointerException(message);
return obj;
}