2012-08-27 51 views
2

我有許多GUI元素類型,並在GUI加載後直接在代碼中使用它們。除非GUI加載器需要知道現有的元素來創建它們,否則就沒問題。我應該如何調用類靜態初始化?

public final class VerticalBox extends Element { 

    ... 

    private static final ElementType type; 
    static { 
     type = ElementType.register("VerticalBox", 
       new ElementType.ICreator() { 
        @Override 
        public Element create(GUI gui) { 
         return new VerticalBox(gui); 
        } 
       }); 
    } 

    @Override 
    public ElementType getType() { 
     return type; 
    } 
} 

最簡單的方法是創建每個元素類的內部靜態init功能,但他們我需要調用init的每一個。

我見過的JavaEE一些註釋,但他們似乎是工作相反的方式。我可以從class獲得全部annotations,但不能從annotation獲得classes。我在這個話題上做了大量的搜索。

回答

0

你想使用某種依賴注入這裏,這將初始化需求的東西。值得關注的是Spring Framework,或者Google Guice或者Pico Container。

在大多數情況下,它的壞主意,有靜態塊,因爲你沒有對他們進行全面控制,其複雜的單元測試了很多 - 測試順序很重要。