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

    [Java] oggettoFileInputStream e dichiarazione di metodo

    Ciao a tutti,
    è la seconda volta che scrivo su questo bel forum. Studio da pochissimo Java e sto analizzando il codice che riporto integralmente nella parte finale del post.
    In particolare non capisco l'interazione tra le seguenti righe di codice:

    1)FileInputStream fileDaLeggere1 = null;
    //sembra che qui venga creato l'oggetto fileDaLeggere1 e che venga valorizzato a null


    2)String fileName = "TristanoeIsotta.txt";
    // viene creata e valorizzata la stringa fileName
    .......
    3)fileDaLeggere1 = Test1(fileName);// Primo grande punto interrogativo.La stringa associata a fileName è l'argomento di Test1. Ma cos'è Test1 un metodo ??? Prima di usare Test1,ammesso che sia un metodo, non dovrei creare l'istanza della classe in cui è definito (es: se test1 è definito nella classe A la sintassi sarebbe: A test1 = new A(String fileName)) ????
    ......
    4)public static FileInputStream Test1(String fileName) throws Exception {
    FileInputStream nomeOggettoFileInputStream = null;
    ...........
    return nomeOggettoFileInputStream;
    }
    //sembra la definizione del metodo Test1 che ritorna l'oggetto nomeOggettoFileInputStream.
    //copiando l'oggetto nomeOggettoFileInputStream nell'oggetto fileDaLeggere1. E' corretto ??).


    Il nocciolo centrale è al punto
    3. Come faccio ad usare il metodo test1 appartenente alla classe FileInputStream senza aver creato prima l'oggetto ???
    Sotto il codice integrale.

    codice:
    package processo.gestioneEccezioni ;
     
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
     
    public class ProgrammaEccezioni {
     
    @SuppressWarnings("unused")
    public static void main(String args[]) throws Exception {
    FileInputStream fileDaLeggere1 = null;
    FileInputStream fileDaLeggere2 = null;
    String fileName = "TristanoeIsotta.txt";
     
    System.out.println("main: Starting " + ProgrammaEccezioni.class.getName() + " with file name = " + fileName);
     
    // get file input stream 1
    try {
    fileDaLeggere1 = Test1(fileName);
    } catch (FileNotFoundException ex) {
    System.out.println("main: Oops, FileNotFoundException caught");
    } catch (Exception ex) {
    System.out.println("main: Oops, general exception caught");
    }
     
    // get file input stream 2
    fileDaLeggere2 = Test2(fileName);
    System.out.println("main: " + ProgrammaEccezioni.class.getName() + " ended");
    }
     
    public static FileInputStream Test1(String fileName) throws FileNotFoundException {
    FileInputStream nomeOggettoFileInputStream = new FileInputStream(fileName);
    System.out.println("Test1: File input stream created");
    return nomeOggettoFileInputStream;
    }
     
    public static FileInputStream Test2(String fileName) throws Exception {
    FileInputStream nomeOggettoFileInputStream = null;
    try {
    nomeOggettoFileInputStream = new FileInputStream(fileName);
    } catch (FileNotFoundException ex) {
    throw new Exception("Test2: Oops, FileNotFoundException caught");
    //System.out.println("Test2: Oops, FileNotFoundException caught");
    } finally {
    System.out.println("Test2: finally block");
    }
    System.out.println("Test2: Returning from Test2");
    return nomeOggettoFileInputStream;
    }
     
    }
    
    ciao a presto
    Ultima modifica di NutellaPazza; 20-11-2014 a 02:29

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio

    1)FileInputStream fileDaLeggere1 = null;
    //sembra che qui venga creato l'oggetto fileDaLeggere1 e che venga valorizzato a null
    Qui non viene creato alcun "oggetto" (gli oggetti si istanziano con new NomeTipo() ). È semplicemente la definizione di una variabile, con un valore iniziale nullo.

    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio

    2)String fileName = "TristanoeIsotta.txt";
    // viene creata e valorizzata la stringa fileName
    Ok

    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio
    Ma cos'è Test1 un metodo ???
    Sì, è un metodo, quello statico definito appena più sotto.

    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio
    Prima di usare Test1,ammesso che sia un metodo, non dovrei creare l'istanza della classe in cui è definito (es: se test1 è definito nella classe A la sintassi sarebbe: A test1 = new A(String fileName)) ????
    Il metodo è static ("di classe"), non serve quindi un oggetto. E il metodo è nella stessa classe in cui fai la invocazione, quindi non è necessario fare ProgrammaEccezioni.Test1( .... ) ma solo Test1( .... )


    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio
    4)public static FileInputStream Test1(String fileName) throws Exception {
    FileInputStream nomeOggettoFileInputStream = null;
    ...........
    return nomeOggettoFileInputStream;
    }
    //sembra la definizione del metodo Test1 che ritorna l'oggetto nomeOggettoFileInputStream.
    //copiando l'oggetto nomeOggettoFileInputStream nell'oggetto fileDaLeggere1. E' corretto ??).
    Sì, viene restituito l'oggetto FileInputStream che nel main viene assegnato a fileDaLeggere1.

    Quote Originariamente inviata da NutellaPazza Visualizza il messaggio
    Come faccio ad usare il metodo test1 appartenente alla classe FileInputStream senza aver creato prima l'oggetto ???
    Test1 ripeto che è un metodo static, appartiene alla classe. Ed è public, qualunque altra classe esterna potrebbe usarlo invocando ProgrammaEccezioni.Test1( .... ). Visto che lo stai invocando dal main nella stessa classe, non serve la qualifica con il nome della classe.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.