RFR: 8343251: Facelift for Type and AnnotatedType specifications [v9]

Chen Liang liach at openjdk.org
Thu Feb 27 20:33:34 UTC 2025


> 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.
> 
> ApiDiff: https://cr.openjdk.org/~liach/apidiff/types-facelift/java.base/java/lang/reflect/package-summary.html
> Javadoc: https://cr.openjdk.org/~liach/javadoc/types-facelift/java.base/java/lang/reflect/package-summary.html
> 
> Please review the associated CSR as well.

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 21 additional commits since the last revision:

 - TypeVariable fixup
 - Merge branch 'master' of https://github.com/openjdk/jdk into doc/owner-type
 - Notes about the design
 - Merge branch 'master' of https://github.com/openjdk/jdk into doc/owner-type
 - Year and typos
 - Merge branch 'm5' into doc/owner-type
 - Problems with owner type, kevin suggestions
 - Slightly improve snippet
 - Merge branch 'master' of https://github.com/openjdk/jdk into doc/owner-type
 - Merge branch 'master' of https://github.com/openjdk/jdk into doc/owner-type
 - ... and 11 more: https://git.openjdk.org/jdk/compare/7828c8a0...c237c2ad

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/19977/files
  - new: https://git.openjdk.org/jdk/pull/19977/files/4f4d9b91..c237c2ad

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=19977&range=08
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=19977&range=07-08

  Stats: 211326 lines in 5010 files changed: 106495 ins; 83078 del; 21753 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