Hybr1d97
06-03-2015, 21:41
Salve, ho un problema con la serializzazione in java: in sostanza ho una classe "Serializzatore" che dispone di due metodi statici, "serialize" e "deserialize", che ricevono come parametri il nome del file su/da cui salvare e l'oggetto da (de)serializzare. Tuttavia, la deserializzazione sembra non funzionare. Questo è il codice:
public class Serializzatore{
...
public static <E> boolean deserialize(String filename, E objectToSave){
boolean done;
try{
ObjectInputStream stream = new ObjectInputStream(new FileInputStream(filename));
try {
objectToSave = ((E)stream.readObject());
}
catch (ClassNotFoundException e){ done = false; }
stream.close();
done = true;
}
catch(FileNotFoundException e) { done = false; }
catch(IOException e) { done = false; }
return done;
}
public static void main(String args[]){
Integer a = 3;
Serializzatore.serialize("ser.bin", a);
a = 1;
Serializzatore.deserialize("ser.bin",a);
System.out.println(a); //Dovrebbe dare 3, invece dà 1
}
}
Praticamente la modifica di a avviene solo localmente al metodo di deserializzazione, ma in realtà a resta sempre uguale. Come mai?
public class Serializzatore{
...
public static <E> boolean deserialize(String filename, E objectToSave){
boolean done;
try{
ObjectInputStream stream = new ObjectInputStream(new FileInputStream(filename));
try {
objectToSave = ((E)stream.readObject());
}
catch (ClassNotFoundException e){ done = false; }
stream.close();
done = true;
}
catch(FileNotFoundException e) { done = false; }
catch(IOException e) { done = false; }
return done;
}
public static void main(String args[]){
Integer a = 3;
Serializzatore.serialize("ser.bin", a);
a = 1;
Serializzatore.deserialize("ser.bin",a);
System.out.println(a); //Dovrebbe dare 3, invece dà 1
}
}
Praticamente la modifica di a avviene solo localmente al metodo di deserializzazione, ma in realtà a resta sempre uguale. Come mai?