【发布时间】:2015-02-28 01:03:24
【问题描述】:
是否可以在 Java 中创建静态类数组? 例如:
SceneObject[] scenes = {Loading.class, Menu.class};
// Loading and Menu extend SceneObject
我们需要通过数组调用静态方法,而不是实例化它们。
编辑:
以下是我们正在努力实现的目标。我们也可以使用许多开关,但是在每个方法中将每个对象添加到每个开关上听起来是多余的。
package net.bitworm.gameengine;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import net.bitworm.scenes.*;
public class SceneController {
public enum Scene{
LOADING_SCENE,
MENU,
SCENE_1
}
public static SceneObject[] scenes = {new Loading(), new Menu()};
public volatile static Scene currentScene = Scene.LOADING_SCENE;
public static void setScene(Scene newScene){
currentScene = newScene;
System.out.println("Switched to " + currentScene.toString());
}
public static void update(GameContainer container, int delta){
scenes[currentScene.ordinal()].update(container, delta);
}
public static void render(GameContainer container, Graphics g){
scenes[currentScene.ordinal()].render(container, g);
}
public static void mouseMoved(int oldx, int oldy, int newx, int newy){
scenes[currentScene.ordinal()].mouseMoved(oldx, oldy, newx, newy);
}
public static void mousePressed(int button, int x, int y){
scenes[currentScene.ordinal()].mousePressed(button, x, y);;
}
public static void mouseReleased(int button, int x, int y){
scenes[currentScene.ordinal()].mouseReleased(button, x, y);
}
public static void mouseWheelMoved(int change){
scenes[currentScene.ordinal()].mouseWheelMoved(change);
}
public static void keyPressed(int key, char c){
scenes[currentScene.ordinal()].keyPressed(key, c);
}
public static void keyReleased(int key, char c){
scenes[currentScene.ordinal()].keyReleased(key, c);
}
【问题讨论】:
-
您在尝试此操作时是否遇到错误?
-
是的。类型不匹配:无法从 Class
-
对,所以你可以定义
Class[] scenes = ... -
以后,请始终在问题中指定错误。此外,请提供更多背景信息 - 我们无法说出您想要实现的目标,这使得帮助您变得更加困难。