|
|||||||
|
|
|
![]() |
|
|
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 20: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: 03:06.



















