Я хочу создать конечный класс, имеющий только статические методы - экземпляр этого класса не понадобится - это должен быть статический контейнер.Предполагается, что в этом классе есть поле карты, содержащее созданных сцен .Теперь проблема заключается в том, что метод getClass()
не является статичным, и я не могу содержать его в своем блоке статического инициализатора.Есть ли способ создания сцен из файлов FXML без использования нестатических методов?
Вот код:
package gui;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import java.util.Map;
import java.util.TreeMap;
public class ViewManager {
/**
* Class containing constant height and width of the window.
*/
public static final class Bounds{
public static final int HEIGHT = 800;
public static final int WIDTH = 800;
}
/**
* Enum class containing paths to following scenes.
*/
public enum SceneName{
LOGIN_VIEW("/login_view.fxml"),
MAIN_VIEW("/main_view.fxml");
private String path;
SceneName(String path) {
this.path = path;
}
@Override
public String toString() {
return path;
}
}
private static Map<SceneName, Scene> sceneContainer;
static{
sceneContainer = new TreeMap<>();
for(SceneName sceneName : SceneName.values()) {
//here is the non-static reference
Parent root = FXMLLoader.load(getClass().getResource(SceneName.LOGIN_VIEW.toString()));
sceneContainer.put(SceneName.LOGIN_VIEW, new Scene(root, Bounds.HEIGHT, Bounds.WIDTH));
}
}
public static Map<SceneName, Scene> getSceneContainer() {
return sceneContainer;
}
}