如何使用简单XML库(版本2.6.5 / 2.6.6)序列化java.util.concurrent.TimeUnit?
这是我要序列化的班级:
@Root(name="settings")
public class Config
{
// some more code
@Element(name="timeunit", required=true)
private static final TimeUnit timeunit = TimeUnit.SECONDS;
// some more code
}
使用简单:
File f = // ...
Config cfg = new Config();
Serializer ser = new Persister();
ser.write(cfg, f);
我得到这个异常:
org.simpleframework.xml.transform.TransformException: Transform of class java.util.concurrent.TimeUnit$4 not supported
到目前为止,我测试了其他注释,例如@Default,但存在相同的问题。想知道为什么Simple的TimeUnits有问题-所有其他类型(类/原始类型)都可以正常工作。
最佳答案
这是一个可能的解决方案:
注解:
@Element(name="timeunit", required=true)
@Convert(TimeUnitConverter.class)
private static final TimeUnit timeunit = TimeUnit.SECONDS;
转换器:
public class TimeUnitConverter implements Converter<TimeUnit>
{
@Override
public TimeUnit read(InputNode node) throws Exception
{
return TimeUnit.valueOf(node.getValue().toUpperCase());
}
@Override
public void write(OutputNode node, TimeUnit value) throws Exception
{
node.getAttributes().remove("class"); /* Not required */
node.setValue(value.toString().toLowerCase());
}
}
关于java - 使用简单XML序列化TimeUnit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12112327/