从类对象访问静态变量

问题描述:

我目前有一个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

不知道我是否完全理解你的问题,但你是否在寻找这样的东西?

@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 – 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