2012-11-28 45 views
4

衆所周知,Object是Java中的根類。我發現了一個名爲Objects的類,看起來與Object非常相似。java.lang.Object VS java.util.Objects,有什麼區別?

Theis Objects上課讓我困惑了一陣子。有人可以告訴我何時何地應該使用Objects類嗎?

+8

的Javadoc是非常有益的 - http://docs.oracle.com/javase/ 7 /文檔/ API/JAVA/UTIL/Objects.html。 – Perception

+7

我在等待有人提交「這個類包含對對象進行操作的靜態工具方法」。作爲一個答案,並得到一個流浪的用戶與不合適的代表一起upvote。 –

+1

@AlexLynch:我知道微不足道的答案在這裏得到最多的代表,但是這到底是如何不恰當的?你知道這個應該被關閉嗎?答案不值得,因爲它「太簡單」了? –

回答

14

Objects只是包含一組效用方法,可用於與Object實例結合使用。請注意,它不能被實例化(它是final,它沒有public構造函數)並且只包含static方法。

投入實用方法在多元化的名類的命名模式是在JDK中很常見:

其他庫也使用此方案,例如Guava

+2

@AlexLynch見? –

+0

@JanDvorak我的生活故事。 –

+0

@AlexLynch爲什麼你不這樣做呢? –

0

的典型應用之一Objects類:

public void foo(SomeClass bar) { 
    Objects.requireNonNull(bar, "custom msg"); // // Ensure an object is not null. 
} 

輸出時bar爲空:

Exception in thread "main" java.lang.NullPointerException: custom msg 
    at java.util.Objects.requireNonNull(Unknown Source) 
    at com.example.ObjectsUsage.main(ObjectsUsage.java:24) 

另外一個從田間地頭修建的hashCode:

@Override public int hashCode() { 
return Objects.hash(this.foo, this.bar, this.duh); 
} 

而最有用的一個:

if (Objects.equals(sun, moon)) { 
    log("I swear I am in earth"); 
} 
相關問題