为抽象类设置构造函数要求或静态方法要求



我有以下问题:

我希望有一个抽象类或类似类型的东西,当扩展时,它将能够被我的FileLoader加载。每个扩展此类型的类都将在启动时加载,并且应该有一种简单的方法来访问这个加载的实例。
我不想有一个大的hashmap,其中包含每个类的保存路径,它扩展了我的";可保存的";类型

我有这个抽象类

public abstract class Saveable {
private String path;

public String getPath() {
return path;
}
public Saveable(String path) {
this.path = path;
}
}

以及另一个扩展Saveable 的类

public class Options extends Saveable {
private String example_property;
private int example_property2;
public Options() {
super("filepath.ending");
}
}

现在,在我的保存实用程序中,当我想将这样一个类加载到java中时,我使用以下内容:SaveManager.load(Options.class);。在我的加载方法中,我不想创建一个新的Options实例来获取路径,因为调用new Options()会做很多其他的事情,并且不能保证具有";0个参数";存在。

我可以通过以下方式解决这个问题:

  • 为每个扩展Saveable的类设置一个要求,使其具有一个接受1个bool-arumgent(bool generateNew(的构造函数,这样我就可以调用new Options(false),它将生成一个新类;制作一个类";所以我可以调用new Options(false).getPath(),我将获得这个Options类的路径
    问题是:我无法定义构造函数的需求
  • 为每个扩展Saveable的类设置一个要求,以提供一个返回文件路径的静态函数,但是:这也是不可能的

有什么想法吗?

只需使用单例设计模式

public class Options extends Saveable {
private String example_property;
private int example_property2;
private Options instance = new Options();
private Options() {
super("filepath.ending");
}

public static Options getInstance(){
return this.instance;
}
}

然后在保存公用程序调用如下

SaveManager.load(Options.getInstance());

最新更新