[ 
https://issues.apache.org/jira/browse/TIKA-2472?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16195284#comment-16195284
 ] 

Eugene Kirpichov commented on TIKA-2472:
----------------------------------------

It is not consistent with equals(), so it is definitely incorrect - Java 
requires hashCode() to be consistent with equals(): 
https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode() _If 
two objects are equal according to the equals(Object) method, then calling the 
hashCode method on each of the two objects must produce the same integer 
result._

This is not the case for the code as written. Try the following:

Metadata a = new Metadata();
a.set("foo", "bar");

Metadata b = new Metadata();
b.set("foo", "bar");

a.equals(b) ==> true
a.hashCode() == b.hashCode() ==> false - and this is incorrect

> Implement Metadata.hashCode
> ---------------------------
>
>                 Key: TIKA-2472
>                 URL: https://issues.apache.org/jira/browse/TIKA-2472
>             Project: Tika
>          Issue Type: Improvement
>    Affects Versions: 1.16
>            Reporter: Sergey Beryozkin
>            Assignee: Sergey Beryozkin
>            Priority: Trivial
>             Fix For: 1.17
>
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to