> The 3 methods to determine conversions and subtyping on `java.lang.Class`, > which are `isInstance`, `cast`, and `isAssignableFrom`, have their > documentation from the earliest days of the Java Platform. During the > language evolution, a lot of terms have become inaccurate, such as > "assignment-compatible", which does not apply for primitive types, and the > out-of-date instanceof analogy with the upcoming patterns, in `isInstance`; > `isAssignableFrom` is not very clear about arrays; `cast` would also benefit > from more detailed explanations. > > In my facelift, I moved the subtyping description to `isAssignableFrom`, and > left the conversion stuff in `isInstance` and `cast`. I intentionally > avoided linking to too many JLS chapters to reduce confusions. I believe in > this shape, we have a good amount of easily comprehensible yet accurate > specification for all 3 methods, and users are welcome to read the linked JLS > chapters for more details and context.
Chen Liang has updated the pull request incrementally with one additional commit since the last revision: Primitive type or void ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28684/files - new: https://git.openjdk.org/jdk/pull/28684/files/3d5e795f..4a4f2867 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28684&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28684&range=00-01 Stats: 11 lines in 1 file changed: 1 ins; 0 del; 10 mod Patch: https://git.openjdk.org/jdk/pull/28684.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28684/head:pull/28684 PR: https://git.openjdk.org/jdk/pull/28684
