Ciao a tutti!!!!
Non riesco a capire perchè se ho una classe che contiene come variabile di classe un oggetto Calendar...quando eseguo la serializzazione e poi la deserializzazione l'oggetto Calendar ha i campi del giorno del mese,del mese e dell'anno a 0.
Aiuto!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!


Ecco il codice:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.NotSerializableException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Calendar;


public class DataProva implements Serializable {
private int giorno;
private String mese;
private int anno;
Calendar calendario = Calendar.getInstance();

public void set(){
String months[]={"Gennaio","Febbraio","Marzo","Aprile","Maggio"," Giugno",
"Luglio","Agosto","Settembre","Ottobre","Novembre" ,"Dicembre"};
giorno=calendario.get(Calendar.DAY_OF_MONTH);
//calendario.add(Calendar.MONTH, 1); //aggiungere uno
//mese=calendario.get(Calendar.MONTH);
mese=months[calendario.get(Calendar.MONTH)];
anno=calendario.get(Calendar.YEAR);
}

public void set(int giorni){
calendario.add(Calendar.DAY_OF_MONTH, giorni);
set();
}


public int getAnno(){
return anno;
}

public String getMese(){
return mese;
}

public int getGiorno(){
return giorno;
}

public Calendar getCalendar(){
return calendario;
}

}

class ProvaData implements Serializable{
DataProva data = new DataProva();

public void set(){
data.set();
}

public void set(int giorni){
data.set(giorni);
}

public int getAnno(){
return data.getAnno();
}

public String getMese(){
return data.getMese();
}

public int getGiorno(){
return data.getGiorno();
}

public Calendar getCalendar(){
return data.getCalendar();
}

public static void main(String args[]){
ProvaData data=new ProvaData();
Serial serial=new Serial();
data.set();
System.out.println(data.getGiorno());
System.out.println(data.getMese());
System.out.println(data.getAnno());
System.out.println("**************");

ProvaData provaData=new ProvaData();


serial.serializza(provaData, "FileProva");
ProvaData dataDopoSerial = (ProvaData) serial.deserializza("FileProva");
Calendar calendarioDopoSerial=dataDopoSerial.getCalendar();

}

}

class Serial{
private FileOutputStream fos;
private ObjectOutputStream oos;
private FileInputStream fis;
private ObjectInputStream ois;

// serializzazione oggetti
public void serializza(Object obj,String nomeFile){
try{
//stream di output
fos = new FileOutputStream(nomeFile);
//stream di serializzazione, oos rappresenta il flusso di output
//nel quale verranno scritti gli oggetti serializzati
oos = new ObjectOutputStream(fos);
}catch(FileNotFoundException f){
System.out.println("Impossibile trovare il file "+ nomeFile);
System.exit(0);
}catch(IOException e){
System.out.println("Errore nella creazione dello stream " +e);
System.exit(0);
}
try{
//scrittura su file della sequenza di byte rappresentativa dello stato dell’oggetto
oos.writeObject(obj);
}catch(NotSerializableException ns){
System.out.println("Impossibile effettuare la serializzazione " +
"perchè l'oggetto "+obj+" non implemta l'interfaccia Serializable");
System.exit(0);
}
catch(IOException e){
System.out.println("Impossibile serializzare l'oggetto " + obj.toString());
System.exit(0);
}

}

// deserializzazione oggetti
public Object deserializza(String nomeFile){
Object salvato= null;
try{
//stream di input
fis = new FileInputStream(nomeFile);
//stream di deserializzazione,ois è il flusso di input
//dal quale verranno letti gli oggetti serializzati
ois = new ObjectInputStream(fis);
}catch(FileNotFoundException f){
System.out.println("Impossibile trovare il file "+ nomeFile);
System.exit(0);
}catch(IOException e){
System.out.println("Errore nella creazione dello stream " +e);
System.exit(0);
}
try{
//lettura e assegnazione dell’oggetto
salvato = ois.readObject();
} catch(IOException e){
System.out.println("Eccezione durante la deserializzazione:" + e);
System.exit(0);
}catch(ClassNotFoundException cne) {
System.out.println("Eccezione:"+cne);
System.exit(0);
}
return salvato;
}
}