Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Salvare oggetti su file

    ciao a tutto come da titolo il mio problema è salvare degli oggetti su file.

    Ho letto in giro che per salvare gli oggetti basta renderli serializabili e poi con un objectOutputStream lo si salva su file. ho provato e sembrava tutto funzionare finche non ho messo al suo interno un'altro oggetto che non era serializable. Come faccio a salvare un oggetto che contine oggetti non serializabili come ArrayList, JPanel o altro?

    Grazie in anticipo per le risposte

  2. #2
    Come hai giustamente detto, per salvare oggetti la classe deve implementare l'interfaccia Serializable, che non implementa metodi ma è "solo" un markup.

    la vera domanda è: perchè dovresti salvare un JPanel?

    Se invece JPanel era solo un esempio, mentre magari ArrayList è più realistico(oltre che utilizzabile), io principalmente lavoro con questa ottica:

    codice:
    public class NomeClasse implements Serializable{
    
    private List<Object> lista;
    
    public NomeClasse(){
       lista=new ArrayLista<Object>();
    }
    ...
    ...
    ...
    
    public boolean addElement(Object c){
       if(lista.contains(c))
          return false;
       lista.add(c);
       return true;
    }

    ovviamente con le dovute accortezze nell'utilizzo degli oggetti e delle varie cose

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Salvare oggetti su file

    Originariamente inviato da andreaben94
    Come faccio a salvare un oggetto che contine oggetti non serializabili
    Se dovessi guardare solo a questa domanda, la risposta è non si può. Semplicemente perchè così è scritto nella documentazione di Serializable

    Classes that do not implement this interface will not have any of their state serialized or deserialized
    Ma c'è anche scritto quanto segue:

    To allow subtypes of non-serializable classes to be serialized, the subtype may assume responsibility for saving and restoring the state of the supertype's public, protected, and (if accessible) package fields. The subtype may assume this responsibility only if the class it extends has an accessible no-arg constructor to initialize the class's state. It is an error to declare a class Serializable if this is not the case. The error will be detected at runtime.
    Questo significa che se vuoi serializzare un oggetto "non serializable", dovrai essere tu a prenderti carico di serializzare tutti i suoi campi pubblici, protected e "package" (senza modificatore)... e la cosa poi è possibile solo se poi si è in grado di ricostruire effettivamente l'oggetto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    ho fatto l'esempio del JPanel perchè la mia idea per semplificare il mio codice al massimo era di salvarmi un intero JPanel con tutto il suo contenuto siccome il mio programma deve disegnare degli schemi in un JPanel.
    girando per il web ho trovato JiBX che sembra che convertano oggetti in XML in modo semplice (devo ancora vedere il codice ho solo letto la descrizione) qualcuno le ha mai usate?

  5. #5
    penso di aver risolto con XTream che mi salva le calssi in xml e non ha problemi con le arraylist anche se devo ancora provare tutto in modo approfondito.

    grazie delle risposte.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.