Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    ok, adesso ho capito bene cosa indetevi per metodo generico!
    ero partito in quarta con i generics senza ragionarci meglio sopra!

    codice:
    @FXML
    private void esporta(ActionEvent ev) {
        Object obj = ev.getSource();
        List<Nota> list = null;
        try {
            list = db.getAll();
        } catch (SQLException ex) {
            GenericDialog.showDialog("Errore database: " + ex.getMessage(), Alert.AlertType.WARNING);
        }
    
        if (list != null) {
            if (obj == miJson) {
                eseguiEsporta(list, tblCaption, "Esporta JSON", new FileChooser.ExtensionFilter("JSON (*.json)", "*.json"), this::esportaNoteInJson);
            } else if (obj == miXls) {
            } else if (obj == miCsv) {
            } else if (obj == miXml) {
            }
        }
    }
    
    public void eseguiEsporta(List<Nota> list, String[] header, String titolo, FileChooser.ExtensionFilter filter, DoExport doExport) {
        Optional<File> f = dc.saveFile(getStage().getOwner(), titolo, filter);
        if (f.isPresent()) {
            try {
                doExport.export(f.get(), list, header);
                GenericDialog.showDialog("Database esportato!", Alert.AlertType.INFORMATION);
            } catch (Exception ex) {
                GenericDialog.showDialog(ex.getMessage(), Alert.AlertType.WARNING);
            }
        }
    }
    
    private void esportaNoteInJson(File file, List<Nota> list, String[] header) throws Exception {
        JsonDb ex = new JsonDb();
        ex.create(file.getAbsolutePath(), list);
    }
    
    private void esportaNoteInXml(File file, List<Nota> list, String[] header) throws Exception {
        XmlDb ex = new XmlDb();
        ex.create(file.getAbsolutePath(), list);
    }
    
    private void esportaNoteInCsv(File file, List<Nota> list, String[] header) throws Exception {
        CsvDb ex = new CsvDb();
        ex.create(file.getAbsolutePath(), header, list);
    }
    
    private void esportaNoteInXls(File file, List<Nota> list, String[] header) throws Exception {
        ExcelDb ex = new ExcelDb();
        ex.create(file.getAbsolutePath(), header, list);
    }

    per quanto riguarda le f.i., devo ancora capire bene, perchè il tuo esempio è molto diverso da quelli che ho visto in giro.
    cmq mi pare di capire che creando i metodi con la stessa "forma" del metodo della f.i., posso usare questo "modo":
    codice:
    this::metodo

    infatti, anche dove non necessario, hai aggiunto il parametro String[] header (ad esempio nella esportazione in json).
    tanto più che, se lo levo, mi da errore.
    più o meno corretto??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    cmq mi pare di capire che creando i metodi con la stessa "forma" del metodo della f.i., posso usare questo "modo":
    codice:
    this::metodo
    Scusa, rispondo solo ora. Riguardo i method reference, ci sono 3 forme differenti (a parte le forme per costruttori e per costruire array):

    NomeClasse::metodoStatico

    rifOggetto::metodoDiIstanza

    NomeTipo::metodoDiIstanza


    dove l'ultimo è solo un po' più particolare perché il "receiver" (ovvero l'oggetto su cui il metodoDiIstanza sarà invocato) diventa il primo argomento di una "equivalente" lambda expression.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Scusa, rispondo solo ora. Riguardo i method reference, ci sono 3 forme differenti (a parte le forme per costruttori e per costruire array):

    NomeClasse::metodoStatico

    rifOggetto::metodoDiIstanza

    NomeTipo::metodoDiIstanza


    dove l'ultimo è solo un po' più particolare perché il "receiver" (ovvero l'oggetto su cui il metodoDiIstanza sarà invocato) diventa il primo argomento di una "equivalente" lambda expression.
    ok penso di aver capito!
    grazie mille!!

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.