On Fri, 2 Aug 2024 00:39:12 GMT, Chen Liang <li...@openjdk.org> wrote:

> 1. Add notes and docs about the difference between resolved constants and 
> constant pool descriptors for annotation constants (e.g. `char` vs 
> `IntegerEntry`)
> 2. Improved value specification to specify their tags.
> 3. Improved value factories to return their specific types instead of 
> `OfConstant`
> 4. Improved value classes to return specific `PoolEntry` subtypes and 
> specific live constant subtypes
> 5. Removed confusing and meaningless 
> `ConstantPoolBuilder.annotationConstantValueEntry`

src/java.base/share/classes/java/lang/classfile/AnnotationValue.java line 90:

> 88:      */
> 89:     @PreviewFeature(feature = PreviewFeature.Feature.CLASSFILE_API)
> 90:     sealed interface OfConstant<C extends AnnotationConstantValueEntry, R 
> extends Comparable<R> & Constable>

I suggest to minimize use of generics in combination with sealed interface 
trees and pattern matching. It does not give many benefits, it takes out a part 
of the code readability and adds many unnecessary brackets and questionmarks: 

case AnnotationValue.OfConstant<?, ?> oc ->


`<R extends Comparable<R> & Constable>` at least brings a benefit of types 
combination. However I still think it does not outweigh the generics use cost. 
None of the generics parameter is near to orthogonal to the `OfConstant` nor 
critical for the API to operate.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20436#discussion_r1701457480

Reply via email to