[cdi-dev] [JBoss JIRA] (CDI-631) Improve AnnotationLiteral for empty annotations

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

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

Mark Struberg commented on CDI-631:

The other question is whether we can cache the hashCode and toString as it should not be subject to changes, right?
I mean do we allow AnnotationLiteral subclasses to modify their values during runtime?
That would conflict with the Annotation definition imo.

> Improve AnnotationLiteral for empty annotations
> -----------------------------------------------
>                 Key: CDI-631
>                 URL: https://issues.jboss.org/browse/CDI-631
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>            Reporter: Mark Struberg
> Annotation hashCode() and equals() operations are fairly expensive as they always invoke getDeclaredMethods() even if there are no such. And getDeclaredMethods involves the SecurityManager + wrapper classes + Exception handling + + + 
> That's horrible expensive.
> In OWB I improved this by introducing an own base class for dynamic annotations which do not have any members:
> https://github.com/apache/openwebbeans/blob/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/EmptyAnnotationLiteral.java
> The method returns a hardcoded String for toString(), returns hardcoded 0 as hashCode and the equals() method invokes the equals on the annotation type.
> We might support this improvements directly in the AnnotationLiteral class or introduce a similar 2nd class especially for empty annotations?

This message was sent by Atlassian JIRA

More information about the cdi-dev mailing list