Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    specializzazioni non saprei ancora, però ad esempio questi due metodi:
    codice:
        private Stage getStage() {
            stage = (Stage) aePane.getScene().getWindow();
            return stage;
        }
    
        @FXML
        private void escPressed(KeyEvent event) {
            if (event.getCode() == KeyCode.ESCAPE) {
                getStage();
                stage.close();
            }
        }
    farli astratti e da implementare nella sottoclasse non ha molto senso, farebbero la stessa cosa.
    non so se riesco a farvi capire il mio dubbio!

  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
    farli astratti e da implementare nella sottoclasse non ha molto senso, farebbero la stessa cosa.
    non so se riesco a farvi capire il mio dubbio!
    Se i due controller devono comportarsi allo stesso modo, allora ripeto tutto (campi, initialize() ecc..) va messo nella superclasse!



    Ti faccio invece un esempio di "specializzazione" oltre al getToken. Immagina che appena dopo aver letto la lista da JSON con il readJson vuoi fare delle operazioni particolari sulla lista, che so ... rimuovere oggetti che non ritieni validi, impostare/inizializzare altro negli oggetti Author/Editor, ecc...

    Nella superclasse farai:

    codice:
    public class ControllerAuthorEditor<T> {
        // ....
    
        public void initialize() {
            // ....
            List<T> list = jsonRead.readJson( ...... );
            list = postRead(list);
            // ....
        }
    
        // ....
    
        protected List<T> postRead(List<T> input) {
            return input;   // NOP, no operation
        }
    }

    Con il postRead ti sei "aperto" la possibilità di far fare ad una sottoclasse qualcosa di particolare sulla lista appena dopo la lettura.
    In ControllerAuthorEditor non fa nulla di particolare, restituisce la stessa lista e basta.

    In ControllerAuthor potresti fare es.

    codice:
    public class ControllerAuthor extends ControllerAuthorEditor<Author> {
        // .... getToken()
    
        @Override
        protected List<Author> postRead(List<Author> input) {
            Iterator<Author> iter = input.iterator();
    
            while (iter.hasNext()) {
                Author author = iter.next();
    
                if (author.getName() == null) {
                    iter.remove();   // rimuove un Author senza name
                }
            }
    
            return input;
        }
    }

    Ora ti è chiara la "flessibilità" di questa cosa?
    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.