2013-04-24 57 views

回答

7

唯一的區別是,如果o爲空,Objects.hashCode(o)返回0而o.hashCode()將拋出NullPointerException

+0

對象是一個hashCode類,它是一個靜態方法。 – 2013-04-24 08:50:39

+2

@downvoter:請解釋。 – 2013-04-24 08:50:56

+0

@Apurv請參閱[here](http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html)(自1.7開始)。 – Dukeling 2013-04-24 08:52:05

4

這是怎麼Objects.hashCode()實現:

public static int hashCode(Object o) { 
    return o != null ? o.hashCode() : 0; 
} 

如果onull然後Objects.hashCode(o);將返回0,而o.hashCode()將拋出一個NullPointerException

2
java.util.Objects { 
    public static int hashCode(Object o) { 
     return o != null ? o.hashCode() : 0; 
    } 
} 

這是一個NPE安全的替代o.hashCode()。

否則沒有區別。

0
Object o = new Object(); 
int i = Objects.hashCode(o); 

它返回一個非空參數的哈希碼和0爲 空參數。這種情況是Object轉介o。它不會丟NullPointerException

Object o = new Object(); 
int i = o.hashCode(); 

返回o稱爲所述的Object hashCode()方法。如果onull,那麼您將得到一個NullPointerException

相關問題