1

したがって、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」に割り当てることができないという事実を除けば。

4

1 に答える 1

2

キャストする必要があります:

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

また、 への割り当てを行わないでくださいthis。代わりに、オブジェクトを外部からロードして、次のようなものを使用する必要がありますBeanUtils.copyProperties(object, yamlObject)

yamlbeansも見てください。

ところで、ユーティリティメソッドを作成するために、キャストはそのようには機能しません。メソッドに引数を渡して、Class<T>戻り値の型を持たせた方がよいでしょうTclazz.cast(..)キャストを行うための使用。

于 2010-12-07T17:04:41.727 に答える