Java SWT - 将最常用的图像保持为静态是否正确?



有人可以告诉我,在SWT(或其他,如JavaFX(中,将图像用作静态而不处理它们是不好的还是可以接受的。例如:

public class TemplateImage {
/** ================== STATIC FINAL VALUES ================== */
/** Buttons */
public static final Image IMAGE_BUTTON_EXPAND = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/plus.png"));
public static final Image IMAGE_BUTTON_REDUCE = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/minus.png"));
public static final Image IMAGE_BUTTON_CREATE = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/write.png"));
public static final Image IMAGE_BUTTON_DELETE = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/delete.png"));
public static final Image IMAGE_BUTTON_MODIFY_REFERENCE = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/link.png"));
/** Miscellaneous */
/** Status */
public static final Image IMAGE_ERROR_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/error-status.png"));
public static final Image IMAGE_WARNING_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/warning-status.png"));
public static final Image IMAGE_UNRESOLVED_CONFLICT_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/unresolved-conflict-status.png"));
public static final Image IMAGE_NEW_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/new-status.png"));
public static final Image IMAGE_ANGRY_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/status-angry.png"));
public static final Image IMAGE_DISAPPOINTED_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/status-disappointed.png"));
public static final Image IMAGE_HAPPY_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/status-happy.png"));
public static final Image IMAGE_NEUTRAL_STATUS = new Image(Display.getCurrent(), TemplateImage.class.getResourceAsStream("/icons/status-neutral.png"));
...

Display.getCurrent()的调用意味着必须确保此静态初始化是在创建Display设备后完成的,并且初始化在用户界面线程上运行。如果其中任何一个是错误的,您将收到错误。

除此之外,静态图像没有问题。

如果使用这些图像的内容预计无法从内存或长期运行过程的一部分(如 Eclipse 插件(中加载,那么静态是不好的。否则,没关系。

最新更新