JDK-8334735 : Remove specialized readXxxEntry methods from ClassReader
  • Type: CSR
  • Component: core-libs
  • Sub-Component: java.lang.classfile
  • Priority: P4
  • Status: Finalized
  • Resolution: Unresolved
  • Fix Versions: 24
  • Submitted: 2024-06-21
  • Updated: 2024-06-24
Related Reports
CSR :  
Relates :  
Description
Summary
-------

Remove specialized `readXxxEntry` methods from `ClassReader`.

Problem
-------

`ClassReader` provides a generic, type-aware `readEntry` to read an entry of a desired type, but there are still specialized methods for reading entries of different kinds; these methods bloat up the API.

Solution
--------

Remove the specialized methods; users can always call `readEntry(offset, DesiredPoolEntry.class)` or `readEntryOrNull(offset, DesiredPoolEntry.class)` instead.

Specification
-------------

    diff --git a/src/java.base/share/classes/java/lang/classfile/ClassReader.java b/src/java.base/share/classes/java/lang/classfile/ClassReader.java
    index 7b181180c6f..ef4a36729e6 100644
    --- a/src/java.base/share/classes/java/lang/classfile/ClassReader.java
    +++ b/src/java.base/share/classes/java/lang/classfile/ClassReader.java
    @@ -130,77 +126,6 @@ public sealed interface ClassReader extends ConstantPool
          */
         <T extends PoolEntry> T readEntryOrNull(int offset, Class<T> cls);
     
    -    /**
    -     * {@return the UTF8 entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a UTF8 entry
    -     */
    -    Utf8Entry readUtf8Entry(int offset);
    -
    -    /**
    -     * {@return the UTF8 entry whose index is given at the specified
    -     * offset within the classfile, or null if the index at the specified
    -     * offset is zero}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or the index does not correspond to
    -     *         a UTF8 entry
    -     */
    -    Utf8Entry readUtf8EntryOrNull(int offset);
    -
    -    /**
    -     * {@return the module entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a module entry
    -     */
    -    ModuleEntry readModuleEntry(int offset);
    -
    -    /**
    -     * {@return the package entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a package entry
    -     */
    -    PackageEntry readPackageEntry(int offset);
    -
    -    /**
    -     * {@return the class entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a class entry
    -     */
    -    ClassEntry readClassEntry(int offset);
    -
    -    /**
    -     * {@return the name-and-type entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a name-and-type entry
    -     */
    -    NameAndTypeEntry readNameAndTypeEntry(int offset);
    -
    -    /**
    -     * {@return the method handle entry whose index is given at the specified
    -     * offset within the classfile}
    -     * @param offset the offset of the index within the classfile
    -     * @throws ConstantPoolException if the index is out of range of the
    -     *         constant pool size, or zero, or the index does not correspond to
    -     *         a method handle entry
    -     */
    -    MethodHandleEntry readMethodHandleEntry(int offset);
    -
         /**
          * {@return the unsigned byte at the specified offset within the classfile}
          * @param offset the offset within the classfile