这是一个简单的类
@Root(strict = false)
public class Foo{
@ElementList(entry = "Test", required = false, inline=true)
@Convert(TestConverter.class)
public List<MyClass> test = new ArrayList<MyClass>();
public static class TestConverter implements Converter<List<MyClass>>
{
public List<MyClass> read(InputNode node) {
return new ArrayList<MyClass>();
}
public void write(OutputNode node, List<MyClass> myclass) {
node.setAttribute("debug", "debug");
}
}
}
永远不会调用转换器。任何人都可以对此有所了解吗?
答案 0 :(得分:3)
永远不会调用转换器。任何人都可以对此有所了解吗?
原因在于:序列化程序不知道 @Convert
。您必须指定 策略 ,告诉他们要使用转换器。
使用以下其中一项:
使用AnnotationStrategy
:
只需替换......
Serializer ser = new Persister();
与
Serializer ser = new Persister(new AnnotationStrategy());
// |----------------------|
当然,每个here都有一个例子。
其他一些问题:
@ElementList(entry = "Test", required = false, inline=true)
@Convert(TestConverter.class)
这可能会失败:
请注意,对于上述字段, 元素注释是必需的 。如果 这与任何其他XML注释一起使用,例如 ElementList 或 文本 注释然后将抛出异常 。
只需使用@Element
代替。
使用@Override
@Override /* Better use this */
public List<MyClass> read(InputNode node) {
// ...
}
@Override /* Better use this */
public void write(OutputNode node, List<MyClass> myclass) {
// ...
}