Visualizzazione dei risultati da 1 a 10 su 18

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    codice:
    public class DataSaverPersona extends DataSaver {
        // campi nome e cognome
        // .... costruttore/i (può anche non esserci se si usano i setter).
    
        public void setNome(String nome) { ...... }
        public void setCognome(String cognome) { ...... }
        publid String getNome() { .... }
        publid String getCognome() { .... }
    
        protected void executeSave(Connection conn) throws SQLException {
            PreparedStatement pstmt = conn.prepareStatement("insert into blabla......");
            try {
                pstmt.setString(1, getNome());
                pstmt.setString(2, getCognome());
                pstmt.executeUpdate();
            } finally {
                pstmt.close();
            }
        }
    }
    questa è una inner class di InternalFramePersona?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    questa è una inner class di InternalFramePersona?
    Nel mio esempio che ho fatto, no, non lo è (se lo avessi fatto, avrei messo DataSaverPersona prima della } di chiusura di InternalFramePersona).
    Ho pensato semplicemente che DataSaverPersona potrebbe, tecnicamente, essere utilizzata anche in altri contesti. Dopotutto è solamente una classe con delle proprietà nome/cognome e con un metodo save() (ereditato) che sa come fare il salvataggio in modo specifico attraverso l'override di executeSave.

    Quindi nulla vieterebbe di usarla altrove nel programma. Se a te non interessa il riuso, come vedi l'unico punto in cui è istanziata nel mio esempio è nel getDataSaver() di InternalFramePersona e soprattutto, restituita come il tipo più astratto che è DataSaver.
    Qui quello che conta è il polimorfismo. All'esterno di InternalFramePersona importa solo "vedere" un oggetto come DataSaver (il tipo più generico) e sapere che ha un save(). Non importa sapere se la classe concreta si chiama PincoPalla, è dentro o fuori InternalFramePersona o nel package xyz.

    Tecnicamente puoi anche farla come inner (o nested) class di InternalFramePersona, anche "privata" e non visibile all'esterno. Dovessi fare il tutto io, le terrei separate ma per un motivo molto semplice: InternalFramePersona si occupa della interfaccia grafica, mentre DataSaverPersona non ha nulla a che fare direttamente con l'interfaccia grafica (anzi, solo con JDBC), quindi non metterei tutto insieme.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2026 vBulletin Solutions, Inc. All rights reserved.