Menu

#5 deserialized support for enum

open-invalid
nobody
None
5
2010-12-20
2009-12-05
No

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

Discussion

  • Carlos M. Pascal

    I have already solved. It is need the default constructor.

     
  • Niall Gallagher

    Niall Gallagher - 2009-12-16

    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;
    }
    }

     
  • Niall Gallagher

    Niall Gallagher - 2010-12-20
    • status: open --> open-invalid
     
  • Niall Gallagher

    Niall Gallagher - 2010-12-20

    This works with constructor injection.

     

Log in to post a comment.