Blocks :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
A DESCRIPTION OF THE REQUEST : Implementations of java.lang.annotation.Annotation and java.lang.reflect.Type that are accessed via core reflection all provide reasonable implementations of equals, hashCode, and toString (even though the Type interface nor its sub-types actually require it per spec/documentation). But the implementations of AnnotatedType have no such implementation. This can make them a pain to inspect when debugging code that uses AnnotatedTypes (especially since the internal fields of the actual implementations are not organized in a way that is intuitive unless one is more familiar with the actual internal implementation and the gory details of how type annotations are stored in class files). JUSTIFICATION : For consistency and ease of use when dealing with AnnotatedTypes. The Type interfaces are not spec'ed to implement these standard methods, but the implementations provided by core reflection implement them anyway. In fact Type#getTypeName() was added in Java 8, and goes a long way towards helping debug code that uses Type. AnnotatedType needs the same treatment. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - It would be nice if the toString() method resulted in something very much like Type.toString(), except with annotations inline: @A() java.util.List<@B() java.lang.String> ACTUAL - Instead, the implementation is inherited from java.lang.Object.toString(): sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedParameterizedTypeImpl@d716361
|