RFR: 8335927: Revisit AnnotationConstantValueEntry and AnnotationValue.OfConstant [v2]

Chen Liang liach at openjdk.org
Fri Aug 2 13:29:32 UTC 2024


On Fri, 2 Aug 2024 07:57:27 GMT, Adam Sotona <asotona at openjdk.org> wrote:

>> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
>> 
>>  - Remove generics, further improve docs
>>  - Merge branch 'master' of https://github.com/openjdk/jdk into fix/annotation-constant
>>  - 8335927: Revisit AnnotationConstantValueEntry and AnnotationValue.OfConstant
>
> 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.

Removed the type parameters. Please review again.

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

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


More information about the compiler-dev mailing list