我要加载很多图像,我希望加载是懒惰的。此时,我编写了一个包含所有已加载图像的类。

public static ImageIcon binIcon = getBinIcon();
private static ImageIcon getBinIcon() {
    if(binIcon == null) {
        return binIcon = FileManipulation.getImage("img/bin.jpg");
    }
    else {
        return binIcon;
    }
}

public static ImageIcon checkboxIcon = getCheckboxIcon();
private static ImageIcon getCheckboxIcon() {
    if(checkboxIcon == null) {
        return checkboxIcon = FileManipulation.getImage("img/checkbox.png");
    }
    else {
        return checkboxIcon;
    }
}

...


最后,我有很多重复的代码,我正在寻找一种性感的方式来减少它。

谢谢您的想法!

最佳答案

您可以创建一个方法来接收要加载的图标和文件名:

public static ImageIcon checkboxIcon;
public static ImageIcon binIcon;

private static ImageIcon getCheckboxIcon(ImageIcon icon, String fileName) {
    return icon == null ? FileManipulation.getImage(fileName) : icon;
}


它将允许您以这种方式加载图标:

binIcon = getCheckboxIcon(binIcon, "img/bin.png");
checkboxIcon = getCheckboxIcon(checkboxIcon, "img/checkbox.png");

10-05 21:59