RFR: 8343251: Facelift for Type and AnnotatedType specifications [v4]
Chen Liang
liach at openjdk.org
Thu Oct 31 22:36:45 UTC 2024
> The Type and AnnotatedType hierarchies have been enigmatic to new users: users have no clue how to categorize arbitrary type objects, when it is safe to cast to more specific types, and the exact conditions for method contracts.
>
> A manifest is [JDK-8306039](https://bugs.openjdk.org/browse/JDK-8306039), where people are massively confused by the conditions for `ParameterizedType::getOwnerType` to return `null`.
>
> To fix these problems, I consulted the JLS, used some terms from there and added JLS links to make the definitions concise and accurate.
>
> Here are some actions:
> 1. Add section for hierarchy overview for both Type and AnnotatedType
> 2. Specify the underlying type for different AnnotatedType subinterfaces
> 3. Define "inner member class" for `getOwnerType`, and refer to it in `AnnotatedType::getAnnotatedOwnerType`.
> 4. Improve the specification for `ParameterizedType::getActualTypeArguments` to note the existence of owner types; also for annotated version
> 5. Minor improvements to `ParameterizedType::getRawType`
> 6. Move the equals specification for `ParameterizedType` to the actual `equals` method.
>
> API diffs: https://cr.openjdk.org/~liach/8343251-apidiff/java.base/java/lang/reflect/package-summary.html
>
> Please review the associated CSR as well.
Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
Intro and other various improvements
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/19977/files
- new: https://git.openjdk.org/jdk/pull/19977/files/090eee17..83feba99
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=19977&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=19977&range=02-03
Stats: 150 lines in 7 files changed: 54 ins; 12 del; 84 mod
Patch: https://git.openjdk.org/jdk/pull/19977.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/19977/head:pull/19977
PR: https://git.openjdk.org/jdk/pull/19977
More information about the compiler-dev
mailing list