2017-08-03 15 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插件)中卸載,那麼靜態是不好的。否則,沒關係。

相關問題