Cerca su HostingTalk.it(puoi inserire qualsiasi parola, termine, azienda, espressione). Scrivi e premi INVIO!
Loading

+ Rispondi alla Discussione
Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 15 di 17
  1. #1
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Aiutino (classi interne java)

    Non conosco bene Java, quindi non ho idea dei termini.
    Cerco di farmi capire.

    Ho un codice di questo tipo:
    Codice:
    oggetto.metodo(new AltroOggetto() {
       @Override  
       public boolean metodoSovrascritto(argomenti) {  
          ...tante cose...
       }  
    });
    In pratica, passo al metodo "metodo" del mio oggetto "oggetto" un oggetto di nome "AltroOggetto".

    Che diavolo sono quelle graffe messe li in mezzo?

    Su Javascript (che non ha niente a che vedere con Java) potrei fare una cosa simile:

    ciccio = {
    tante cose
    }

    in modo da creare l'oggetto
    e poi richiamarlo dove mi pare, evitando di mettere milioni di righe di codice come argomento di una funzione.

    C'è un metodo più elegante per fare ciò? (sicuramente si)
    Voglio togliere quella "cosa" (non so come si chiama) dal di li.
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.



  2. #2
    Webhosting Guru
    Data Registrazione
    May 2006
    Messaggi
    1,604

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Non conosco bene Java, quindi non ho idea dei termini.
    Cerco di farmi capire.

    Ho un codice di questo tipo:
    Codice:
    oggetto.metodo(new AltroOggetto() {
       @Override  
       public boolean metodoSovrascritto(argomenti) {  
          ...tante cose...
       }  
    });
    In pratica, passo al metodo "metodo" del mio oggetto "oggetto" un oggetto di nome "AltroOggetto".

    Che diavolo sono quelle graffe messe li in mezzo?

    Su Javascript (che non ha niente a che vedere con Java) potrei fare una cosa simile:

    ciccio = {
    tante cose
    }

    in modo da creare l'oggetto
    e poi richiamarlo dove mi pare, evitando di mettere milioni di righe di codice come argomento di una funzione.

    C'è un metodo più elegante per fare ciò? (sicuramente si)
    Voglio togliere quella "cosa" (non so come si chiama) dal di li.
    Vado un po' a naso, Java non lo utilizzo da anni.
    A me sembra che, ogni volta che richiemi questo metodo, tu non passi il tipo ma istanzi un nuovo oggetto del tipo AltroOggetto.
    Se vuoi riutilizzare lo stesso oggetto potresti usare un "Singleton". Praticamente istanzi l'oggetto nella main associandolo ad una variabile visibile in public. A quel punto lo referenzi da dove vuoi.
    Ma non sono sicuro di aver capito bene la grana...

  3. #3
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino

    Boh,
    secondo me vien creato un oggetto al volo, con al suo interno il codice messo tra graffe, che estende AltroOggetto in automatico.

    Una sorta di equivalente a:
    Codice:
    public class FintoOggetto extends AltroOggetto {
       codice
    }
    tant'è che ho anche un override di un metodo normalmente presente in AltroOggetto.


    Ci vuole Antonio qui....
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

  4. #4
    Webhosting Guru
    Data Registrazione
    May 2006
    Messaggi
    1,604

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Boh,
    secondo me vien creato un oggetto al volo, con al suo interno il codice messo tra graffe, che estende AltroOggetto in automatico.

    Una sorta di equivalente a:
    Codice:
    public class FintoOggetto extends AltroOggetto {
       codice
    }
    tant'è che ho anche un override di un metodo normalmente presente in AltroOggetto.


    Ci vuole Antonio qui....
    Emh, è quello che ho detto

    Ora la domanda è, tu che vuoi fare?

  5. #5
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino

    Citazione Originariamente Scritto da Valeriano Manassero Visualizza Messaggio
    Emh, è quello che ho detto
    Azz.. dillo con parole tue la prossima volta

    Ora la domanda è, tu che vuoi fare?
    Esattamente quello che ho fatto, e funziona, ma vorrei capire come fa a funzionare

    Ho fatto una cosa e non so come abbia fatto a farla. Ho avuto

    Se metto:

    AltroOggetto pippo = new AltroOggetto() {
    bla bla bla
    }

    Eclipse mi dice che "pippo" non sarà mai letto e me lo mette come warning, quindi penso non si debba fare così.
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

  6. #6
    Webhosting Guru
    Data Registrazione
    May 2006
    Messaggi
    1,604

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Eclipse mi dice che "pippo" non sarà mai letto e me lo mette come warning, quindi penso non si debba fare così.
    Eclipse si faccia i *azzi suoi

    La domanda è *dove* pippo viene istanziato.
    Genericamente lo si deve istanziare in un "livello" abbastanza alto da essere accessibile dove serve.
    Occhio che, se precedentemente veniva istanziato un nuovo oggetto ogni volta, magari c'era un motivo. Ora ti troverai a riutilizzare sempre pippo, ovvero un'unica istanza.

  7. #7
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino

    A dire il vero, non ho usato il metodo pippo ma il metodo 'strano'.
    anche se non cambierebbe niente, perchè pippo viene istanziato la riga sopra a quella attuale, entrambe dentro una funzione, quindi ogni volta ne vien creato uno nuovo.

    Poco male, la funzione è 2 righe esatte, ma vorrei capire cosa significa quel metodo di scrittura in java.
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

  8. #8
    SuperMod L'avatar di Antonio
    Data Registrazione
    Jun 2006
    Messaggi
    3,385

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Ci vuole Antonio qui....
    Ti rispondo domani che sono da PDA
    Antonio Angelino :: LinkedIn | Twitter


  9. #9
    Webhosting Guru Junior L'avatar di xAnder
    Data Registrazione
    Aug 2006
    Località
    Torino
    Messaggi
    632

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Eclipse mi dice che "pippo" non sarà mai letto e me lo mette come warning, quindi penso non si debba fare così.
    Di solito eclipse mette quell'avvertimento quando pippo non viene usato dopo essere stato creato.

  10. #10
    SuperMod L'avatar di Antonio
    Data Registrazione
    Jun 2006
    Messaggi
    3,385

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Non conosco bene Java, quindi non ho idea dei termini.
    Cerco di farmi capire.

    Ho un codice di questo tipo:
    Codice:
    oggetto.metodo(new AltroOggetto() {
       @Override  
       public boolean metodoSovrascritto(argomenti) {  
          ...tante cose...
       }  
    });
    In pratica, passo al metodo "metodo" del mio oggetto "oggetto" un oggetto di nome "AltroOggetto".

    Che diavolo sono quelle graffe messe li in mezzo?

    Su Javascript (che non ha niente a che vedere con Java) potrei fare una cosa simile:

    ciccio = {
    tante cose
    }

    in modo da creare l'oggetto
    e poi richiamarlo dove mi pare, evitando di mettere milioni di righe di codice come argomento di una funzione.

    C'è un metodo più elegante per fare ciò? (sicuramente si)
    Voglio togliere quella "cosa" (non so come si chiama) dal di li.
    Allora, quello che hai usato senza saperlo è una classe innestata anonima

    Con:
    Codice:
    class ciccio {
    
    private void nomeMethod {
    
    oggetto.metodo(new AltroOggetto() {
       @Override  
       public boolean metodoSovrascritto(argomenti) {  
          ...tante cose...
       }  
    });
    
    }
    quello che fa java è tradurre il tutto in:

    Codice:
    class ciccio {
    
        //Inner class non anonima adesso...
        class MioAltroOggetto implements AltroOggetto {
                @Override  
                public boolean metodoSovrascritto(argomenti) {  
                          ...tante cose...
               }  
        }       
    
        private void nomeMethod {
              oggetto.metodo(new MioAltroOggetto());
        }
    }
    Le inner class non sono una cosa da eliminare, hanno il loro perché e devi vedere se esplicitandole non vai ad avere un codice meno leggibile (sempre che tu possa farlo).

    Ci sono tutta una serie di cose relative a scoping, implementazioni delle interfacce & Co che dovresti studiarti per comprendere a fondo come si usano e perché le inner/nested class in java.

    PS: Che stai combinando? Solitamente le inner le hai in fw event-driven, stai creando una gui?
    Ultima modifica di Antonio; 24-07-2010 alle 08:52
    Antonio Angelino :: LinkedIn | Twitter


  11. #11
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino

    Citazione Originariamente Scritto da Antonio Visualizza Messaggio
    Allora, quello che hai usato senza saperlo è una classe innestata anonima
    Grazie per aver dato un nome a questa strana cosa e per aver rinominato l'oggetto del thread, non avevo idea di cosa stessi parlando quindi ho messo un oggetto abbastanza generico.

    Con:
    Codice:
    class ciccio {
    
    private void nomeMethod {
    
    oggetto.metodo(new AltroOggetto() {
       @Override  
       public boolean metodoSovrascritto(argomenti) {  
          ...tante cose...
       }  
    });
    
    }
    quello che fa java è tradurre il tutto in:

    Codice:
    class ciccio {
    
        //Inner class non anonima adesso...
        class MioAltroOggetto implements AltroOggetto {
                @Override  
                public boolean metodoSovrascritto(argomenti) {  
                          ...tante cose...
               }  
        }       
    
        private void nomeMethod {
              oggetto.metodo(new MioAltroOggetto());
        }
    }
    E' stata la prima cosa che ho provato a fare, però la struttura di Java mi ha fatto passare la voglia di fare il test.
    Obbliga (giustamente, aggiungo io) a mettere una classe per file ed il file deve avere il nome della classe.
    Non avevo voglia di creare il file quindi l'ho lasciata stare li dove è.

    Le inner class non sono una cosa da eliminare, hanno il loro perché e devi vedere se esplicitandole non vai ad avere un codice meno leggibile (sempre che tu possa farlo).

    Ci sono tutta una serie di cose relative a scoping, implementazioni delle interfacce & Co che dovresti studiarti per comprendere a fondo come si usano e perché le inner/nested class in java.
    Ok, ora che so di cosa si tratta, concordo con te, non sono sempre da scartare.
    Anche in javascript ci sono le funzioni innestate:

    Codice:
    window.ciccio = miaFunzione(parametro1, function(test) {
       ...
    });
    molto comode in certi casi. (sopratutto quando devi catturare gli eventi del browser)

    PS: Che stai combinando? Solitamente le inner le hai in fw event-driven, stai creando una gui?
    si, diciamo di si.
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

  12. #12
    SuperMod L'avatar di Antonio
    Data Registrazione
    Jun 2006
    Messaggi
    3,385

    Re: Aiutino

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    E' stata la prima cosa che ho provato a fare, però la struttura di Java mi ha fatto passare la voglia di fare il test.
    Obbliga (giustamente, aggiungo io) a mettere una classe per file ed il file deve avere il nome della classe.
    Non avevo voglia di creare il file quindi l'ho lasciata stare li dove è.
    Se fai caso a quel che ho scritto, ti ho solo tradotto la classe da innestata anonima ad innestata "esplicita". Dato che la classe è comunque all'interno di un altra, anche volendo non puoi materialmente creare un altro file per quella classe. Sarà il compilatore java, però, a generare 2 file .class distinti (se ricordo bene qualcosa tipo ciccio.class e ciccio$1MioAltroOggetto.class).

    Quindi se fai come it ho scritto, non dovrebbe cazziarti per questione del 1file=1classe
    Antonio Angelino :: LinkedIn | Twitter


  13. #13
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino (classi interne java)

    Giusto, non avevo notato fosse innestata.
    Dopo provo...
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

  14. #14
    SuperMod L'avatar di Antonio
    Data Registrazione
    Jun 2006
    Messaggi
    3,385

    Re: Aiutino (classi interne java)

    Citazione Originariamente Scritto da guest Visualizza Messaggio
    Giusto, non avevo notato fosse innestata.
    Dopo provo...
    Con le classi innestate puoi fare diversi giochini, volendo puoi anche istanziarle dal di fuori (vedi operatore .new) o fare strani magheggi con la data struct della classe esterna (ovviamente scope permettendo)
    Antonio Angelino :: LinkedIn | Twitter


  15. #15
    Provider L'avatar di guest
    Data Registrazione
    Nov 2007
    Località
    Riccione
    Messaggi
    6,234

    Re: Aiutino (classi interne java)

    Ma le classi innestate hanno una utilità simile ai namespace?
    http://www.web4web.it - Low Cost Hosting
    Tutti i pacchetti sono multidominio.
    Database e domini illimitati a partire da €10


    http://www.guest.it - Servizi professionali su misura.

Discussioni Simili

  1. Risposte: 22
    Ultimo Messaggio: 24-05-2011, 10:41
  2. Effetti di IP di classi C separate sul SEO
    Di ServWise nel forum Promozione, advertising e SEO
    Risposte: 3
    Ultimo Messaggio: 24-09-2010, 00:23
  3. Rese pubbliche alcune e-mail interne di Microsoft: è polemica
    Di Redazione HostingTalk nel forum Hosting e dintorni
    Risposte: 0
    Ultimo Messaggio: 04-03-2008, 11:21
  4. Aiutino con htaccess
    Di usu nel forum Io Programmo
    Risposte: 6
    Ultimo Messaggio: 07-08-2007, 06:34

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Tag per Questa Discussione

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi