|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2009
Città: MN - MI
Messaggi: 2741
|
[Java] Non riesco a serializzare una lista
Ciao a tutti devo serializzare una lista di oggetti Punteggio...mi da sempre errore come posso fare?
Vi riporto il codice che ho scritto... DataEntry.java Codice:
package main; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.util.List; import javax.swing.*; class DataEntry extends JPanel implements ActionListener { JButton b,b2; JTextField txt; JTextField txt2; static JTextArea records; public int score; public DataEntry(int score){ super(); this.score=score; b = new JButton("Inserisci"); b2= new JButton("Visualizza records"); txt=new JTextField("Nome", 20); txt2=new JTextField(Integer.toString(score),20); txt2.setEditable(false); records= new JTextArea(11, 20); records.setEditable(false); b.addActionListener(this); b2.addActionListener(this); add(txt); add(txt2); add(b); add(b2); add(records); } public void readFile() { records.setText(""); LinkedList<Punteggio> record=new LinkedList(); record=carica(); // record.get(1); System.out.println(record.get(1)); } public void actionPerformed(ActionEvent arg) { String pressed = arg.getActionCommand(); JButton bottone=(JButton) arg.getSource(); if (pressed.equals("Inserisci")) { Punteggio p = new Punteggio(); p.setGiocatore(txt.getText()); p.setPunti(Integer.parseInt(txt2.getText())); salva(p); readFile(); } else { //readFile(); } } public void salva(Punteggio p) { LinkedList <Punteggio> punteggi; punteggi=carica(); punteggi.add(p); salva(punteggi); } /** Salva i primi dieci punteggi della collezione in argomento */ private void salva(LinkedList lista) { FileOutputStream fout=null; ObjectOutputStream out; try { fout=new FileOutputStream("record.dat"); } catch(IOException e) {} try { out=new ObjectOutputStream(fout); out.writeObject(lista); } catch(IOException e) {} } public LinkedList <Punteggio> carica() { File file = new File("record.txt"); if(!file.exists()) { return new LinkedList<Punteggio>(); } else { return carica(file); } } private LinkedList <Punteggio> carica(File file) { LinkedList <Punteggio> lista = null; FileInputStream fin=null; ObjectInputStream in=null; try { fin=new FileInputStream(file); in=new ObjectInputStream(fin); } catch(IOException e) {} try { lista=(LinkedList<Punteggio>) (in.readObject()); } catch(IOException e) {} catch(ClassNotFoundException e) {} return lista; } } Codice:
package main; import java.io.*; public class Punteggio implements Serializable { private String giocatore; private int punti; public String getGiocatore() { return giocatore; } public void setGiocatore(String nome) { giocatore = nome; } public int getPunti() { return punti; } public void setPunti(int punti) { this.punti = punti; } public int compareTo(Object o) { Punteggio that = (Punteggio) o; if(that.getPunti() < this.getPunti()) return -1; if(that.getPunti() > this.getPunti()) return 1; return 0; } } ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 2992
|
se ci dici anche l'errore magari ti potremmo essere + di aiuto. Per quello che mi ricordo, ti posso consigliare di sostituire int con Integer nella classe Punteggio.
Ultima modifica di nucarote : 06-09-2009 alle 19:55. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
int o Integer è uguale - dal punto di vista della serializzazione.
"flusha" dopo la scrittura: out.flush(); e chiudi i flussi al termine delle operazioni di lettura e scrittura: out.close();
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:20.