2017-07-10 2 views
-1

Je dois changer le type de données du champ quantity tout sérialisation et de-serialization.`Sérialisation Java, Puis-je changer le type de données de la variable?

Double-Integer dans writeObject();

Integer à Double dans readObject();

classe article

class Items implements Serializable { 

    private static final long serialVersionUID = 1537402844776823455L; 

    Double quantity; 

    private void writeObject(ObjectOutputStream o) throws IOException { 
     PutField field = o.putFields(); 
     field.put("quantity", quantity.intValue()); 
    } 

    private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { 

     GetField field = stream.readFields(); 

     if((field.get("quantity", new Double(0)) instanceof Integer)){ 
      quantity = ((Integer) field.get("quantity", new Integer(0))).doubleValue(); 
     }else if((field.get("quantity", new Double(0)) instanceof Double)){ 
      quantity = (Double) field.get("quantity", new Double(0)); 
     } 
    } 
} 

I essayé cela mais la quantité est toujours double pendant la dé-sérialisation.

quantity Le champ doit être Double dans la classe et Integer dans l'objet sérialisé. Est-ce possible avec la sérialisation?

+0

Pourquoi? Vous allez perdre à la fois la précision et la portée. – EJP

+0

Le serveur recevra deux types d'objets sérialisés dont un avec champ de quantité Double autre avec entier, Au côté serveur, il est nécessaire de désérialiser les deux requêtes et de les transtyper en double. –

Répondre

0

Essayez java.lang.Number. Entier et Double l'étend.