首页 > 解决方案 > Java中的动态类

问题描述

我正在尝试构建一个简单的类,该类在扩展时为类提供两个函数save()& read()。此类将序列化子类并将其存储在 .ser 文件中。并对其进行反序列化并恢复状态。

我正在考虑使用构建器来初始化子类。这样,该类将始终从先前的状态开始,或者在需要时创建一个新状态。

Todo x = new Todo().Builder().className(Todo.class).build();

save()功能运行良好。

    public void save(String fileName) {
        try {
            fout = new FileOutputStream(fileName+".ser");
            out = new ObjectOutputStream(fout);

            out.writeObject(this);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在我正在使用的作为参数的Builder()函数中,但现在我无法弄清楚我必须做什么。Todo.classClass<?> className

生成器函数我想加载类的对象并返回它。在读取函数中我想更新类的状态。

标签: java

解决方案


ObjectInputStream创建并返回一个完整的对象,我不知道你想如何将它与你的构建器想法结合起来。这是从文件中读取任意类的对象的简单方法:

    public static <T> T read(String fileName, Class<T> klass) throws IOException, ClassNotFoundException {
        Path filePath = Path.of(fileName);
        try (ObjectInputStream objectInputStream = new ObjectInputStream(Files.newInputStream(filePath))) {
            return klass.cast(objectInputStream.readObject());
        }
    }

推荐阅读