2012-07-30 277 views
0

我目前有一個Class類型的數組,它只保存BuildingComplex類型的子類。它基本上保存了所有可以爲我創建的遊戲構建的不同類。從類對象訪問靜態變量

private static Class[] AVAILABLE = new Class[]{ 
    LumberCamp.class, Farm.class, Storehouse.class, Port.class, Barracks.class, Edifice.class 
}; 

當我想從這些類中的一個(所有有這個靜態變量是由於從BuildingComplex繼承)訪問靜態變量,我不能確定如何具有可[I]訪問靜態變量,因爲我不能找到任何將Class轉換爲特定類的資源。

預先感謝您。

+1

靜態變量不通過繼承可用。如果BuildingComplex有一個靜態變量,那麼只需通過'BuildingComplex.STATIC_VAR'訪問它。 – jtahlborn 2012-07-30 16:18:55

+0

我的壞話!保護變量! AVAILABLE對於當前正在使用的課程是靜態的!我的主要問題是訪問該類,以便它被引用爲BuildingComplex的子類。 – user1563402 2012-07-30 16:25:01

+0

在閱讀了兩次任務之後,我仍然不清楚你想要什麼。我想我不是唯一的一個。嘗試更簡潔,你可能會得到更好的答案。 – Durandal 2012-07-30 16:56:36

回答

0

不知道我是否完全理解你的問題,但你是否在尋找這樣的東西?

@SuppressWarnings("unchecked") 
private static Class<? extends BuildingComplex>[] AVAILABLE = new Class<? extends BuildingComplex>[]{ 
    LumberCamp.class, Farm.class, Storehouse.class, Port.class, Barracks.class, Edifice.class 
}; 
+0

已經試過這個,它不起作用。無法創建Class <?的通用數組?擴展BuildingComplex> – user1563402 2012-07-30 16:34:32

+0

是的,你需要添加一個SuppressWarnings註釋來擺脫那個(由於java數組的限制)。在這種情況下,代碼是完全安全的。 – jtahlborn 2012-07-30 16:50:41

+0

我通過做一些非常相似的事情來解決我的問題。謝謝! – user1563402 2012-08-01 15:09:55