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

    Serializzare un oggetto.

    Salve;
    Ragazzi sto cercando di serializzare un oggetto, ma non ci riesco proprio, mi date cortesemente una aiuto?

    1° Classe
    Codice PHP:
    import java.io.*;

    class 
    Serializzare {
        
        private static 
    Addizione addizione;
        private static 
    Serializzare serializzare;
        
        
        public static 
    void main(String args[]){
        
            
    addizione = new Addizione();
            
    serializzare = new Serializzare();
            
            
    // Accedo al metedo per l'addizione
            
    int RisAddizione addizione.calcoloAdd(510);
        
            
    // Accedo ai metodi carica e salva
            
    serializzare.carica();
            
    serializzare.salva();
        
        }
        
        
        
        
        
    // Metodo carica 
        
    public static void carica() {
            
            try{
                
    FileInputStream fis = new FileInputStream("file.txt");
                
    ObjectInputStream ois = new ObjectInputStream(fis);
                
    addizione = (Addizioneois.readObject();
                
    fis.close();
            }
            
            catch(
    IOException a){
                
    System.out.println("Errore lettura del file.txt!!!");
                
    addizione = new Addizione();
            }        
        }
        
        
        
        
        
    // Metodo salva
        
    public static void salva() { 
            
    int comando 1;
            switch(
    comando){
                
                
    //Caso 1
                
    case 1:
                
    //serializza oggetto addizione
                
    FileOutputStream fos = new FileOutputStream("file.txt");
                
    ObjectOutputStream oos = new ObjectOutputStream(fos);
                
    oos.writeObject(addizione);
                
    oos.flush();
                
    fos.close();
                break;
                
                
                
    // Caso 2
                
    case 2:
                
    // Istruzioni caso 2 ...
                
    break;
                
            }
        }



    2° Classe
    Codice PHP:
    import java.io.Serializable;

    class 
    Addizione implements Serializable {
            
            
    //Semplice metodo per l'addizione
            
    public int calcoloAdd(int cifra1int cifra2){
            
    int risultato cifra1 cifra2;
            return 
    risultato;
        
        }


    Questa è la lista di errori che mi da il compilatore

    Errori 6:

    1) unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
    - si riferisce alla riga "addizione = (Addizione) ois.readObject();".

    2) unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown:
    - si riferisce alla riga "FileOutputStream fos = new FileOutputStream("file.txt");".

    3) unreported exception java.io.IOException; must be caught or declared to be thrown:
    - ObjectOutputStream "oos = new ObjectOutputStream(fos);".

    4) unreported exception java.io.IOException; must be caught or declared to be thrown:
    - si riferisce alla riga "oos.writeObject(addizione);".
    ^
    5) unreported exception java.io.IOException; must be caught or declared to be thrown
    - si riferisce alla riga "oos.flush();".
    ^
    6) unreported exception java.io.IOException; must be caught or declared to be thrown
    - si riferisce alla riga"fos.close();".
    Cosa erro?????

    Grazie mille
    La matematica non sa nulla delle cause, mentre la ricerca delle cause è compito della filosofia, e la logica, SCIENZA DEL PENSIERO IN QUANTO PENSIERO, ne fornisce lo strumento privilegiato.

    By W.HAMILTON

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    il primo è un problema di classpath
    gli altri dicono che devi dichiarare throws IOException o mettere un try catch nel metodo salva

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Serializzare un oggetto.

    Originariamente inviato da albertozzo
    Cosa erro?????
    Per quanto riguarda le eccezioni, è chiaro che devi consultare la documentazione per sapere quali eccezioni vengono lanciate da metodi/costruttori. Per dirne una, hai fatto un metodo salva() in cui non c'è alcuna minima gestione delle eccezioni. Né hai catturato/gestito le eccezioni, né le hai dichiarate con il throws.
    Deduco che devi comprendere meglio come si gestiscono le eccezioni.

    Poi c'è un'altra cosa. La tua classe Addizione deve appunto essere Serializable e va bene. Ma non vedo campi di istanza .... che senso ha serializzare un oggetto che non ha "stato"???


    Originariamente inviato da floyd
    il primo è un problema di classpath
    gli altri dicono che devi dichiarare throws IOException o mettere un try catch nel metodo salva
    Non è un problema di classpath! È readObject() che può lanciare ClassNotFoundException.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    il primo è un problema di classpath
    Come faccio a risolvere questo incoveniente? :master:

    Grazie mille
    La matematica non sa nulla delle cause, mentre la ricerca delle cause è compito della filosofia, e la logica, SCIENZA DEL PENSIERO IN QUANTO PENSIERO, ne fornisce lo strumento privilegiato.

    By W.HAMILTON

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837

    Re: Re: Serializzare un oggetto.

    Originariamente inviato da andbin
    Non è un problema di classpath! È readObject() che può lanciare ClassNotFoundException.
    avevo letto male

  6. #6
    Poi c'è un'altra cosa. La tua classe Addizione deve appunto essere Serializable e va bene. Ma non vedo campi di istanza .... che senso ha serializzare un oggetto che non ha "stato"???
    Niente ho abbozzato un esempio velocemente...

    cmq ho corretto così:
    Codice PHP:
    import java.io.Serializable;

    class 
    Addizione implements Serializable {
            
    //Variabile d'istanza
            
    public int risultato;
            
    //Semplice metodo per l'addizione
            
    public int calcoloAdd(int cifra1int cifra2){
            
    risultato cifra1 cifra2;
            return 
    risultato;
        
        }

    Ho seguto il tuo consiglio ma niente da fare...
    La matematica non sa nulla delle cause, mentre la ricerca delle cause è compito della filosofia, e la logica, SCIENZA DEL PENSIERO IN QUANTO PENSIERO, ne fornisce lo strumento privilegiato.

    By W.HAMILTON

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da albertozzo
    Niente ho abbozzato un esempio velocemente...
    Ok.

    Originariamente inviato da albertozzo
    Ho seguto il tuo consiglio ma niente da fare...
    Per quanto riguarda le eccezioni? Devi trattarle in modo appropriato. Devi sapere la differenza tra eccezioni "checked" e "unchecked", devi sapere come catturarle e gestirle oppure come dichiararle con il throws. Non è una cosa che si può spiegare con poche parole su di un forum.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Ho risolto!!!

    Codice PHP:
        // Metodo carica 
        
    public static void carica() {
            
            try{
                
    FileInputStream fis = new FileInputStream("file.txt");
                
    ObjectInputStream ois = new ObjectInputStream(fis);
                
    addizione = (Addizioneois.readObject();
                
    fis.close();
            }
            
            catch(
    IOException a){
                
    System.out.println("Errore lettura del file.txt!!!");
                
            }        
            
            catch(
    ClassNotFoundException c){
                
    System.out.println("Errore!!!");
                
            }
            
        
            
        }
        
        
        
        
        
    // Metodo salva
        
    public static void salva() { 
            
    int comando 1;
            switch(
    comando){
                
                
    //Caso 1
                
    case 1:
                
    //serializza oggetto addizione
                
    try{
                    
    FileOutputStream fos = new FileOutputStream("file.txt");
                    
    ObjectOutputStream oos = new ObjectOutputStream(fos);
                    
    oos.writeObject(addizione);
                    
    oos.flush();
                    
    fos.close();
                }
                
                catch(
    IOException b){
                    
    System.out.println("Errore scrittura sul file.txt!!");
                }
                
                break;
                
                
                
    // Caso 2
                
    case 2:
                
    // Istruzioni caso 2 ...
                
    break;
                
            }
        } 
    Ho catturato tutte le eccezioni, ed è andato tutto a buon fine...

    Grazie a tutti voi che mi avete dato consigli preziosi.

    Alla prossima
    La matematica non sa nulla delle cause, mentre la ricerca delle cause è compito della filosofia, e la logica, SCIENZA DEL PENSIERO IN QUANTO PENSIERO, ne fornisce lo strumento privilegiato.

    By W.HAMILTON

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    30
    se stai facendo delle prove e non hai esigenza di catturare i diversi generi di eccezioni puoi limitarti a fare un catch generico catturando appunto una generica Exception

    codice:
    catch (Exception e) {
    ....................................
    }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.