Autore Topic: Domanda Java generica: estensione anonima classe  (Letto 649 volte)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Domanda Java generica: estensione anonima classe
« il: 25 Ottobre 2011, 20:58:47 CEST »
0
Salve,
quante volte avrete visto ed utilizzato la seguente forma:

Codice (Java): [Seleziona]
new Object() {

@Override
public String toString(){
return "ciao";
}

};

Cioè estendere la classe "sul momento" in cui ne crei un oggetto

bene.... è possibile in questo modo dichiarare anche il costruttore? Ad esempio:

Codice (Java): [Seleziona]
new Object("ciao") {

public mString;

public <COSTRUTTORE> (String pString){
mString = pString;
}

};

dato che hanno il nome della classe, e quella che creo è una classe anonima, come devo fare?
Grazie

Gianni
« Ultima modifica: 25 Ottobre 2011, 21:01:25 CEST da giannign1 »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Domanda Java generica: estensione anonima classe
« Risposta #1 il: 26 Ottobre 2011, 00:12:56 CEST »
0
Purtroppo non è possibile definire il costruttore di una classe anonima.
Dalla classe anonima puoi comunque accedere alle variabili final della classe in cui la definisci.

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:Domanda Java generica: estensione anonima classe
« Risposta #2 il: 26 Ottobre 2011, 00:13:56 CEST »
0
Si me ne ero accorto provando nel frattempo
grazie 1000

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Domanda Java generica: estensione anonima classe
« Risposta #3 il: 26 Ottobre 2011, 00:36:07 CEST »
0
No, non si può dichiarare in modo esplicito il costruttore , poichè essendo classi anonime non hanno un nome da attribuire al costruttore !
Le classi anonime estendo o implementano rispettivamente una super-classe o una interfaccia, si possono sovrascrivere i metodi (o aggiungerne dei nuovi) o implementare i metodi "dichiarati" dalle interfacce, ma proprio per la loro particolarità di essere istanziate e dichiarate "al volo" assumono il costruttore/i definito/i dalla loro super-classe, questo perchè si stà istanziando un oggetto  della super-classe e lo si sta estendendo implicitamente e quindi si assume il costruttore noto della super-classe.

Se si ha necessità di ridefinire il costruttore sarebbe idoneo definire una inner-class piuttosto che una classe anonima per non brutalizzare il codice.

EDIT: ops...Ricky`mi ha preceduto :-)