Grazie mille.
Questo però non c'entra proprio nulla con la serializzazione.
Io sinceramente non ho capito molto la serializzazione/deserialiazzazione.
Serializzazione: Dal web e dal libro la intendono come un procedimento per salvare uno oggetto (o più) in un file in maniera persistente.
Mentre la deserializzazione è il processo che permette di ricostruire l'oggetto che avevo salvato.
Ma allora che differenza c'è tra scrivere, ad esempio, una stringa su un file e scrivere una funzione che implementa l'interfaccia serializzabile. In realtà sembra di fare la stessa cosa, solo che con la prima non scrivo "implements Serializable" mentre con la seconda si. Però per entrambe scrivo e leggo dal file, nella stessa maniera.
Innanzitutto nota che fare
System.out.println(u.toString());
oppure
System.out.println(u);
Sarebbe la stessa cosa [..]
Grazie sì hai ragione, ho visto adesso sul libro che System.out.println() vuole una stringa, quindi è la stessa cosa.
Il punto è che la tua classe utente non ridefinisce ("override") il metodo toString().
Quindi resta solo quello ereditato da Object, che è in grado di fornire solo quella forma che vedi.
Ho implementato due funzioni: getName() e getSurname(). Ora restituisce rispettivamente i nomi e i cognomi dei due oggetti salvati.
Ad esempio, l'output di questo:
while(fis.available() > 0)
{
Object r = ois.readObject();
u = (Clients) r;
System.out.println(u.getName());
}
è:
Mario
Paolo
Per stampare solo le informazioni di uno dei due oggetti, ho fatto una cosa del genere:
String s = "Mario";
while(fis.available() > 0)
{
Object r = ois.readObject();
u = (Clients) r;
if(u.getName().equals(s))
{
System.out.println(u.getName());
System.out.println(u.getSurname());
}
}
Il fatto è che se ha molte proprietà diventa una cosa molto lunga da scrivere, magari sarebbe comodo costruirsi un array e fare un for.
Ho un'altra domanda (scusa te ne sto facendo milioni): Se volessi modificare il nome di uno dei due oggetti, ad esempio non si chiama più Mario ma Gabriele, basterà solo invocare la funzione setName("Gabriele") ? Così facendo , però, nel file, rimarrà Mario , ma tutte le volte che richiamerò getName() mi ritornerà Gabriele. Dopo aver ricompilato la classe java che scrive sul file i due oggetti e successivamente richiamando getName() , esso ritornerà di nuovo Mario. E' corretto?
Grazie ancora e scusami le tante domande.