Visualizzazione dei risultati da 1 a 10 su 11

Discussione: significato di this

Hybrid View

  1. #1

    significato di this

    Scusate chi mi puo' spiegare in modo semplice l' istruzione this ?
    Ho capito che all'interno di una classe:

    int x1=0;
    public TastieraFinestra(String titolo) {
    this.x1=x1
    }
    la x1 del costruttore la riporta alla dichiarazione della variabile.


    ma in questo caso cosa fa ? la riga incriminata e' questa "pulsanti = new PannelloTasti(this);"

    import java.awt.BorderLayout;
    import java.awt.Font;

    import javax.swing.JFrame;
    import javax.swing.JTextArea;

    public class TastieraFinestra extends JFrame
    {
    JTextArea display;
    PannelloTasti pulsanti;
    boolean resetDisplay = true;

    public TastieraFinestra(String titolo)
    {
    super(titolo);
    display = new JTextArea();
    display.setText("");
    pulsanti = new PannelloTasti(this);
    add(display,BorderLayout.NORTH);
    add(pulsanti,BorderLayout.CENTER);
    display.setEditable(false);
    display.setFont(new Font("SansSerif",Font.PLAIN,22));
    }

    grazie a tutti...Abbiate pazienza

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    Scusate chi mi puo' spiegare in modo semplice l' istruzione this ?
    this non è una "istruzione" ... è una "parola chiave".

    All'interno di un contesto "di istanza" (quindi NON static) il this è il riferimento all'oggetto su cui è invocato un metodo oppure l'oggetto in fase di costruzione/inizializzazione.

    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    Ho capito che all'interno di una classe:

    int x1=0;
    public TastieraFinestra(String titolo) {
    this.x1=x1
    }
    la x1 del costruttore la riporta alla dichiarazione della variabile.
    Il this.x1 sulla sinistra è il riferimento alla variabile di istanza. Ma x1 sulla destra da dove proviene?
    Se non c'è una variabile che "nasconde" il x1 di istanza, allora this.x1=x1 non ha senso perché entrambi gli x1 fanno riferimento alla variabile di istanza.

    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    ma in questo caso cosa fa ? la riga incriminata e' questa "pulsanti = new PannelloTasti(this);"
    Passa al costruttore di PannelloTasti il riferimento all'oggetto TastieraFinestra che il costruttore TastieraFinestra(String titolo) sta inizializzando.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    this non è una "istruzione" ... è una "parola chiave".

    All'interno di un contesto "di istanza" (quindi NON static) il this è il riferimento all'oggetto su cui è invocato un metodo oppure l'oggetto in fase di costruzione/inizializzazione.


    Il this.x1 sulla sinistra è il riferimento alla variabile di istanza. Ma x1 sulla destra da dove proviene?
    Se non c'è una variabile che "nasconde" il x1 di istanza, allora this.x1=x1 non ha senso perché entrambi gli x1 fanno riferimento alla variabile di istanza.


    Passa al costruttore di PannelloTasti il riferimento all'oggetto TastieraFinestra che il costruttore TastieraFinestra(String titolo) sta inizializzando.
    Scusa ma non ho capito niente di questo..
    Passa al costruttore di PannelloTasti il riferimento all'oggetto TastieraFinestra che il costruttore TastieraFinestra(String titolo) sta inizializzando.[/QUOTE]

    mi puoi fare un esempio

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    Scusa ma non ho capito niente di questo..
    codice:
    public class A {
        public A() {
            // qui puoi usare this
        }
    }

    Se fai:

    A a1 = new A();

    stai costruendo un oggetto di tipo A. Viene istanziato l'oggetto (allocata della memoria), viene eseguito il costruttore A() e alla fine viene assegnato il riferimento dell'oggetto alla variabile a1.
    Bene questo riferimento, quello assegnato cioè ad a1 è lo STESSO riferimento che puoi avere già nel costruttore usando il this.

    Il this è il riferimento all'oggetto che è stato istanziato, che il costruttore inizializzerà (con eventuali operazioni varie) e che verrà assegnato ad a1.

    ------------

    E per completare il discorso con il this, nei metodi:

    codice:
    public class Prova {
        private int v1 = 123;
    
        public void prova1() {
            System.out.println(v1);
            System.out.println(this.v1);
        }
    
        public void prova2(int v1) {
            System.out.println(v1);
            System.out.println(this.v1);
        }
    
    
        public static void main(String[] args) {
            Prova p = new Prova();
            p.prova1();
            p.prova2(456);
        }
    }

    In prova1() l'unica variabile "in scope" (cioè nell'ambito di visibilità di prova1) è la variabile di istanza v1. Quindi fare riferimento a v1 oppure this.v1 è la stessa cosa, in quanto il this può essere implicito.

    In prova2() il parametro v1 "nasconde" la variabile di istanza che ha lo stesso nome. Quindi all'interno di prova2, usare solo v1 fa riferimento al parametro e se vuoi accedere alla variabile di istanza nascosta, allora devi usare this.v1

    Ora è più chiaro?
    Ultima modifica di andbin; 23-03-2018 a 12:02
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Scusami ma saro' un po' "Timido" con le variabili ho capito perfettamente ..ma sul costruttore ancora non capisco..Abbi pazienza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da antonello2 Visualizza il messaggio
    Scusami ma saro' un po' "Timido" con le variabili ho capito perfettamente ..ma sul costruttore ancora non capisco..Abbi pazienza
    Ti è chiaro che facendo:

    A a1 = new A();

    alla fine di tutto viene assegnato alla variabile a1 il riferimento ad un oggetto di tipo A ?

    Bene, il this all'interno del costruttore ha lo stesso identico valore di quel riferimento assegnato ad a1.


    P.S. ho editato il post precedente con altro esempio, leggi bene se hai risposto prima.
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.