确定对象类型然后从snake yaml.load(InputStream)转换对象的方法

时间:2010-12-07 16:57:18

标签: java yaml snakeyaml

所以我正在为所有我继承的模型对象编写这个实用程序类,这样每当我调用saveToFile(filename)时,它都会以yaml格式保存该对象。 To String只是以yaml格式输出文件。我真正希望能够做的是使用文件中的属性初始化对象的所有属性,但我不想事先知道它是什么类型的对象。

我想要一种类似于

的方法
public void loadFromFile(String filename){
    try {
        InputStream input = new FileInputStream(new File(filename));
        Yaml y = new Yaml();
        this = y.load(input);
    } catch (IOException e) {
        System.out.println(e);
    }
}

这样可以正常工作,除非您无法将对象分配给“this”。

1 个答案:

答案 0 :(得分:2)

你必须施展:

YourObject object = (YourObject) y.load(input);

另外,请勿对this进行分配。相反,您应该在外部加载对象并使用类似BeanUtils.copyProperties(object, yamlObject)

的内容

另请查看yamlbeans

顺便说一下,为了制作一个实用工具方法,你的演员阵容不会那样。您最好将Class<T>参数传递给该方法,并让它返回类型T。使用clazz.cast(..)进行演员表。