[cdi-dev] [JBoss JIRA] (CDI-630) Revise javax.enterprise.util.AnnotationLiteral.cachedHashCode

Mark Struberg (JIRA) issues at jboss.org
Tue Sep 13 03:39:00 EDT 2016

    [ https://issues.jboss.org/browse/CDI-630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13292283#comment-13292283 ] 

Mark Struberg commented on CDI-630:

You will end up with 2 instances, think about it again ;)
Of course equals() would return true, but hashCode is different. 

You are right with hash collision, but the other way we end up with not finding the right instances :(

> Revise javax.enterprise.util.AnnotationLiteral.cachedHashCode
> -------------------------------------------------------------
>                 Key: CDI-630
>                 URL: https://issues.jboss.org/browse/CDI-630
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>            Reporter: Martin Kouba
>            Priority: Optional
>             Fix For: 2.0 (discussion)
> Currently, {{AnnotationLiteral.hashCode()}} always returns {{0}} if there are no members (ignoring annotation type completely). Although it does not break {{Object.hashCode()}} contract, I believe we should -either return a number based on the annotation type (to make the annotation literal instances more usable in hash tables) or- simply return zero and don't cache the value at all.
> UPDATE: We may not return a number based on the annotation type because it would break the {{java.lang.annotation.Annotation.hashCode()}} contract.

This message was sent by Atlassian JIRA

More information about the cdi-dev mailing list