Serializace enum do xml v Jave 1.5

Horny, Kamil (EOT) Kamil.Horny na skoda-auto.cz
Úterý Leden 24 13:03:47 CET 2006


Zdravim, 
mam jednoduchy objekt obsahujici String a enum. Objekt se pokousim ulozit a znovu vytvorit. 
Pokud ukladam pomoci ObjectOutputStream, probehne vse ok. Pokud vsak pouziji XMLEncoder, pri zapisu objektu se vypisi chyby: 
java.lang.InstantiationException: SEnum
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new(); 
a objekt se zapise bez enumu. 

public enum SEnum{
  Zero, One, Two;
} 

public class S implements Serializable{
  public S () {}

  private String name;
  private SeriEnum e;
  
  public String getName(){
    return name;
  }
  public void setName(String val){
    name=val;
  }
  
  public SeriEnum getE() {
    return e;
  }
  public void setE(SeriEnum Ty) {
    this.e = Ty;
  }
}

  public static void main(String[] args) {
    S so=new S();
    so.setName("beruska");
    so.setE(SEnum.Two);

    String fileName="zk.xml";

    //zapis
    FileOutputStream os=new FileOutputStream(fileName);
    BufferedOutputStream bos=new BufferedOutputStream(os);
    XMLEncoder en=new XMLEncoder(bos);
    en.writeObject(so);
    en.flush();
    en.close();

    //obnoveni
    FileInputStream fis=new FileInputStream(fileName);
    BufferedInputStream bis=new BufferedInputStream(is);
    XMLDecoder de=new XMLDecoder(bis);
    Object do=de.readObject();
    de.close();
}

Nevim, jestli JavaBean nemuze z principu mit vlastnost typu enum (resp. enum neni JavaBean), jestli (a jak?) pro tvorbu enumu pouzit (Class Enum<...>). Dokazal jsem problem pouze obejit tim, ze jsem v tride S vytvoril jeste jednu String promennou, ktera obsahuje enum jako retezec a v jejim setru se mj. enum vytvari:

private String es;
  public String getE(){
    return es;
  }
  public void setE(String val){
    e=SEnum.valueOf(val);
    es=val;
}

Je to sice fungujici, ale nevedel by nekdo, jak ukladat enum primo?

Dekuji
Kamil Horný

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://amaio.cz/pipermail/konference/attachments/20060124/6131df43/attachment.htm>


Další informace o konferenci Konference