2016-03-27 54 views
5

In Java 8 esiste una classe java.util.Objects, che contiene il metodo hashCode(). Allo stesso tempo Google Guava 19 contiene com.google.common.base.Objects, che ha anche il metodo hashCode().Guava.Objects.hashCode vs Java.Objects.hashCode

Le mie domande:

  1. C'è qualche motivo per cui dovrei preferire di 19 hashCode() su Java 8 Guava?
  2. Posso fare completamente affidamento su Java 8 hashCode() oppure è meglio rimanere con Guava?
+1

Perché pensi che l'implementazione di Guava sarebbe meglio del nuovo built-in? Inoltre, definire "migliore". – Tunaki

+2

Questa classe è presente da Java 7 –

+0

Forse, l'hash di Guava è basato su una funzione hash migliore/altra? –

risposta

13

il metodo di Guava precede Java 7.

Il metodo Java con lo stesso nome accetta solo un singolo argomento. Ma un fratello java.util.Objects.hash() accetta un numero variabile di argomenti, come Guava Objects.hashCode().

Se si utilizza Java 7 o successivo, è possibile utilizzare java.util.Objects.hash(...). Il Guava documentation prende nota di ciò:

Nota per Java 7 e versioni successive: questo metodo deve essere considerato obsoleto; utilizzare invece Objects.hash (java.lang.Object ...).

Se si utilizza Java 6 o precedente, è possibile utilizzare il metodo di Guava.