I have tried to deserialize a class which have an enum member and I have got the following exception
org.simpleframework.xml.core.PersistenceException: Constructor not matched for class tutorial.simple.EnumBug
at org.simpleframework.xml.core.ClassCreator.getInstance(ClassCreator.java:107)
at org.simpleframework.xml.core.Composite.readConstructor(Composite.java:272)
at org.simpleframework.xml.core.Composite.read(Composite.java:220)
at org.simpleframework.xml.core.Composite.read(Composite.java:186)
at org.simpleframework.xml.core.Composite.read(Composite.java:134)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:78)
at org.simpleframework.xml.core.Persister.read(Persister.java:546)
at org.simpleframework.xml.core.Persister.read(Persister.java:528)
at org.simpleframework.xml.core.Persister.read(Persister.java:509)
at org.simpleframework.xml.core.Persister.read(Persister.java:454)
at org.simpleframework.xml.core.Persister.read(Persister.java:433)
for this example:
enum PartType {
A,
B
}
@Root()
public class EnumBug {
@Element
private PartType type;
public EnumBug(PartType typeType) {
this.type = typeType;
}
public PartType getType()
{
return type;
}
}
Can I use enum member? please give me an example.
thanks alot
I have already solved. It is need the default constructor.
Another way to solve this is constructor injection like so.
@Root
public class EnumBug {
@Element
private PartType type;
public EnumBug(@Element(name="type") PartType type) {
this.type = type;
}
public PartType getType() {
return type;
}
}
This works with constructor injection.