> Introduce an instance method, `isClassOrInterface`, to `java.lang.Class` and > `java.lang.invoke.TypeDescriptor$OfField`. > > `java.lang.constant.ClassDesc` comes with an `isClassOrInterface` method. It > turns out that such a check is frequently needed in the use of `Class` > objects, usually as `isArray() || isPrimitive()` or `!isArray() && > !isPrimitive()`, with 14 occurrences in various reflective code. > > In addition, `Class` can offer a more efficient implementation than two > checks: it can perform a single bit pattern check to derive this result, > making such an API more feasible. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
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 eight additional commits since the last revision: - Merge branch 'master' of https://github.com/openjdk/jdk into feature/class-is-class-or-interface-1 - More spec clarifications - Wording review from Joe - Update usage in Valhalla - Merge branch 'master' of https://github.com/openjdk/jdk into feature/class-is-class-or-interface-1 - Simplify code - Merge branch 'master' of https://github.com/openjdk/jdk into feature/class-is-class-or-interface-1 - Class.isClassOrInterface ------------- Changes: - all: https://git.openjdk.org/jdk/pull/32109/files - new: https://git.openjdk.org/jdk/pull/32109/files/937dd2ee..8240dea2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=32109&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=32109&range=02-03 Stats: 218 lines in 16 files changed: 41 ins; 107 del; 70 mod Patch: https://git.openjdk.org/jdk/pull/32109.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32109/head:pull/32109 PR: https://git.openjdk.org/jdk/pull/32109
