Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从类对象访问静态变量_Java_Arrays_Class_Casting_Subclass - Fatal编程技术网

Java 从类对象访问静态变量

Java 从类对象访问静态变量,java,arrays,class,casting,subclass,Java,Arrays,Class,Casting,Subclass,我目前有一个Class类型的数组,它只保存BuildingComplex类型的子类。它基本上包含了我正在创建的游戏中允许构建的所有不同类 private static Class[] AVAILABLE = new Class[]{ LumberCamp.class, Farm.class, Storehouse.class, Port.class, Barracks.class, Edifice.class }; 当我想从这些类中的一个访问静态变量时(由于从BuildingComple

我目前有一个Class类型的数组,它只保存BuildingComplex类型的子类。它基本上包含了我正在创建的游戏中允许构建的所有不同类

private static Class[] AVAILABLE = new Class[]{
   LumberCamp.class, Farm.class, Storehouse.class, Port.class, Barracks.class, Edifice.class
};
当我想从这些类中的一个访问静态变量时(由于从BuildingComplex继承,所有这些类都具有此静态变量),我无法确定如何让可用的[I]访问静态变量,因为我找不到任何将类强制转换为特定类的资源


提前谢谢你。

我不确定我是否完全理解你的问题,但你在找这样的东西吗

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

私有静态类静态变量不能通过继承使用。如果BuildingComplex有一个静态变量,那么只需通过
BuildingComplex.static\u VAR
访问它即可。我的错!受保护的变量!对于当前使用的类,可用的是静态的!我的主要问题是访问该类,以便将其作为BuildingComplex的子类引用。在阅读了两次任务之后,我仍然不清楚您想要什么。我想我不是唯一一个。尽量简明扼要,你可能会得到更好的答案。我不确定这是否是一个好的设计,但请检查
Class.asSubclass
是否符合你的要求。已经尝试过了,但它不起作用。无法创建Classyes的泛型数组,您需要添加SuppressWarnings注释来消除它(由于java数组的限制)。在这种情况下,代码是完全安全的。我通过做类似的事情解决了我的问题。非常感谢。