PDA

View Full Version : [Java]ObjectOutputStream


Gjbob
31-01-2009, 15:21
Diciamo che sn ancora alle prime armi con il java e mi stavo cimentando con una cosa del genere che ovviamente non va:

import java.util.*;
import java.io.*;
public class testObjectIO {
public static void main(String[] args){
File f = new File("C://dati.dat");
ArrayList<testclass> test = new ArrayList<testclass>();
testclass prova = new testclass(111,"Codice1","Descrizione1");
test.add(prova);
prova = new testclass(222,"Codice2","Descrizione2");
test.add(prova);
try {
ObjectOutputStream o = new ObjectOutputStream(f);
o.writeObject(test);
o.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
questa invece la classe testclass
public class testclass {
private int id;
private String codice, descrizione;
public testclass(int nid, String cod, String desc){
id = nid;
codice = cod;
descrizione = desc;
}
public void print(){
System.out.println("ID: " + id + "Codice: " + codice + "Descrizione: " + descrizione);
}
}

domande:

1) xke non va:D?

2) se io creo un ArrayList di testclass come faccio a raggiungere i metodi presenti all'interno della classe?


Grazie a tt x l'aiuto.

agente mm8
31-01-2009, 15:34
ehm... cos'è che non ti funziona? che errori ti dà il compilatore?

per la seconda devi usare il metodo get(int) passando come argomento l'indice dell'elemento che ti serve.

Gjbob
31-01-2009, 15:44
Questo riporta eclipse:

Description Resource Path Location Type
The constructor ObjectOutputStream(File) is undefined testObjectIO.java testObjectIO/src line 24 Java Problem



Per quanto riguarda la seconda domanda, forse non ho kiaro io il concetto.

diciamo per esempio che abbia creato 1 arraylist di testclass e che, dopo aver inserito dei valori voglia invocare il metodo stampa presente in testclass. Come faccio?

andbin
31-01-2009, 16:57
ObjectOutputStream o = new ObjectOutputStream(f);L'unico costruttore utilizzabile direttamente di ObjectOutputStream riceve solo un OutputStream, non File, String o altro.
Istanzia dunque un FileOutputStream e passalo a quel costruttore.

E inoltre: ArrayList è di per sé serializzabile ma lo devono essere anche tutti gli oggetti contenuti!! E la tua classe testclass non è Serializable.

Gjbob
31-01-2009, 22:31
mi spiegheresti meglio il concetto di classe serialiZzabile ??

agente mm8
01-02-2009, 12:08
Direttamente dal sito della sun:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html
;)