RFR: 8159055: ImageIcon.setImage and ImageIcon(Image) constructor can't handle null parameter [v11]

ExE Boss duke at openjdk.org
Mon Jun 23 21:19:35 UTC 2025


On Fri, 20 Jun 2025 15:29:56 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> Prasanta Sadhukhan has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Remove resetting description from constructor as it is already null
>
> src/java.desktop/share/classes/javax/swing/ImageIcon.java line 233:
> 
>> 231:         Object o = image.getProperty("comment", imageObserver);
>> 232:         if (o instanceof String) {
>> 233:             description = (String) o;
> 
> To address [Phil's comment](https://github.com/openjdk/jdk/pull/25767/files#r2155610976):
> 
>> This is wasted work if the app calls ImageIcon(Image, String) because that promptly over-writes whatever was obtained via this code.
> 
> If we're going to change the constructors, to avoid *this wasted work* when `ImageIcon(Image, String)` constructor is called, I suggest moving the work into `ImageIcon(Image, String)` and implement `ImageIcon` like this:
> 
> 
>     public ImageIcon (Image image) {
>         String description = null;
>         if (image != null) {
>             Object o = image.getProperty("comment", null);
>             if (o instanceof String) {
>                 description = (String) o;
>             }
>         }
>         this(image, description);
> 
> It is allowed in JDK 22 and later.

Note that this was a preview language feature until **JDK 25**.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25767#discussion_r2162548529


More information about the client-libs-dev mailing list