2017-08-03 35 views
0

有人可以告诉我,如果在SWT(或其他人,如JavaFX),使用静态图像,而不处理它们是不好的或可接受的。例如:Java SWT - 将最常用的图像保持为静态是否正确?

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")); 

... 
+0

为什么不能接受?这是我的偏好问题。我更关心最后一个关键字,并在资源声明中进行初始化。如果您的资源不可用,恢复将不会是一个选项... – Maaaatt

+0

我读过很多关于“您应该避免在OOP中使用静态”的讨论,我只是想知道并且找不到有关此主题的主题。关于最后一个关键字,这是因为我认为这些图标永远不会改变,并且图像被设置在我的build.properties中。它会一直这样,不是吗? – FreeWorld

+0

如果他们不是,无论原因如何?或者如您在验证的答案中所述,在创建显示设备后没有完成初始化?你将没有干净的方式来恢复该国际海事组织。那里的关键字最终成为一个问题,因为你将无法重新初始化您的图像。 – Maaaatt

回答

0

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

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

0

如果使用这些映像的内容有望从内存或部分长期生存过程(如Eclipse插件)中卸载,那么静态是不好的。否则,没关系。

相关问题