On Mon, 23 Jun 2025 21:17:05 GMT, ExE Boss <d...@openjdk.org> wrote: >> 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**.
I haven't done my due diligence to verify whether this feature can be used. Even if this particular way can't be used, it's still a viable option, just move the code above into a helper method. public ImageIcon(Image image, String description) { this.image = image; this.description = description; loadImage(image); } public ImageIcon (Image image) { this(image, getImageComment(image)); } /** * {@return the {@code "comment"} property of the image * if the value of the property is a sting} * @param image the image to get the {@code "comment"} property */ private static String getImageComment(Image image) { if (image == null) { return null; } Object o = image.getProperty("comment", null); return (o instanceof String) ? (String) o : null; } This should be done separately from this changeset, I think, to have shorter, more specific changes. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25767#discussion_r2164102520