RFR: 8297750: Unnecessary Vector usage in IIORegistry

Sergey Bylokhov serb at openjdk.org
Tue Nov 29 07:39:18 UTC 2022


On Sun, 27 Nov 2022 22:22:54 GMT, David Schlosnagle <duke at openjdk.org> wrote:

>> Field `javax.imageio.spi.IIORegistry#initialCategories` is modified only in `static {}` block, which makes it effectively final. Instead of legacy synchronized `Vector` we can use non-threadsafe `ArrayList` here.
>
> src/java.desktop/share/classes/javax/imageio/spi/IIORegistry.java line 89:
> 
>> 87:      * categories (superinterfaces) to be used in the constructor.
>> 88:      */
>> 89:     private static final ArrayList<Class<?>> initialCategories = new ArrayList<>(5);
> 
> Should this be an immutable list and remove the static block?
> 
> Suggestion:
> 
>     private static final List<Class<?>> initialCategories = List.of(
>                 ImageReaderSpi.class,
>                 ImageWriterSpi.class,
>                 ImageTranscoderSpi.class,
>                 ImageInputStreamSpi.class,
>                 ImageOutputStreamSpi.class);

I think this one could be a better approach.

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

PR: https://git.openjdk.org/jdk/pull/11379



More information about the client-libs-dev mailing list