2012-11-08 60 views
0

好傢伙;這是我的問題: 我目前有一個類擴展另一個將在每個類上有一個gameinfo.class註釋(有沒有辦法,我可以強制執行這與編譯器?)Java:從超類型加載動態類註釋

理想情況下,我想打電話給以下在類型是擴展:

@GameInfo(name = "Default Minigame", aliases = {"DM"}, pvp = false, authors = {"Tom"}, 
gameTime = 65, description = "desc") 
public class DefaultMinigame extends Minigame { 

    public DefaultMinigame(Plugin p) { 
     super(p, DefaultMinigame.class.getAnnotation(GameInfo.class)); 
    } 

我寧願沒有叫上述每一類,而是調用它Minigame.class 我將如何做到這一點,而無需調用「這個」(由於超類型未被初始化)

感謝您的時間! (對不起,如果我所說的不是最容易理解的問題)

+1

爲什麼你不能使用子類標註'this'在父類的構造?如'this.getClass()。getAnnotation(GameInfo.class)'? – aroth

+0

Thankyou Aroth - 我認爲有人需要睡眠(我)我面對如此艱難! –

回答

0

你不能強制子類有一個註解。如果這對你很重要,你可以使用模板方法模式。

但是如果你需要使用註釋,你可以閱讀

class Minigame { 
    protected Minigame() { 
     GameInfo info = getClass().getAnnotation(GameInfo.class); 
    } 
} 
+0

什麼可以保護嗎?並且在所有的誠實中,當我意識到這個工作的時候我就會面面相覷:protected Minigame()GameInfo f = this.getClass()。getAnnotation(GameInfo.class); –