Non riesco a capire il refernce this in Java. Eppure ho capito altri concetti più difficili.
Qualcuno può spiegarmi la cosa in maniera semplice semplice semplice con qualche esempio ancora più semplice...
Grazie
Non riesco a capire il refernce this in Java. Eppure ho capito altri concetti più difficili.
Qualcuno può spiegarmi la cosa in maniera semplice semplice semplice con qualche esempio ancora più semplice...
Grazie
codice:public class Vegetale { private Date dataScoperta; private String nomeLatino; private String nomeComune; public Vegetale(dataScoperta) { this.dataScoperta = dataScoperta; // Distingue la variabile locale da quella di classe } public Vegetale (Date dataScoperta, String nl) { this.dataScoperta = dataScoperta; nomeLatino = nl; // this non occorre perché variabile locale e di classe hanno nomi diversi } public Vegetale (String nl) { this (null, nl); // Richiamo il costruttore con due parametri } public Vegetale metodoAssurdo() { return this; // Restituisce un riferimento a questo oggetto } public void setNomeComune (String nomeComune) { this.nomeComune = nomeComune; // come per il primo costruttore, solo che questo è un setter! } }
"Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
Linus Torvalds
Io continuo a non capire una mazza. A questo punto mi domando se è possibile "fare a meno" del concetto del refence this. Mi sembra l'unica soluzione
up
Ho aggiunto un metodo assurdo...
Se ora non ne comprendi l'utilità, non ti preoccupare: la scoprirai quando sarà necessario. Nelle applicazioni grafiche con Swing e awt è molto frequente una istruzione come questa:
addActionListere(this);
Per il resto è utile per setter e costruttori: permette (come nel primo costruttore sopra) di non dover lavorare troppo di fantasia per trovare i nomi dei parametri. Nulla di essenziale, ma molto comodo.![]()
"Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
Linus Torvalds
Scusa ma non mi è riuscito di trovarlo prima...
Using the this Keyword
"Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
Linus Torvalds
Grazie Pastore. Comunque se non ti dispiace vorrei provare a dare una mia interpretazione di quello che hai scritto per vedere se almeno ho inteso qualcosina
Io faccio questo esempio
public class Data
{
private int giorno
private int mese
private int anno
public void set giorno (int giorno)
{
if (this.giorno>0 && this.giorno<=31)
this.giorno=giorno;
}
else
{System.out.println(“Giorno non valido”)
Anzitutto ti prego di sorvolare sulla correttezza sintattica (sono ancora ai primordi).
Allora poichè ho una variabile d'istanza (all'interno della classe ma fuori dal metodo) che ha lo stesso nome della variabile locale per distinguere tra le due nel metodo set giorno gli dico ch deve fare riferimento alla variabile locale this.giorno. Giusto?
mmm.. la variabile locale è giorno.nel metodo set giorno gli dico ch deve fare riferimento alla variabile locale this.giorno.
quella d'istanza è this.giorno.
però... nell'if controlli il valore della variabile d'istanza, non di quella locale.
Codice PHP:public void setGiorno (int giorno)
{
if (this.giorno>0 && this.giorno<=31) // Il this non è di troppo in questa riga?
this.giorno=giorno;
else
System.out.println(“Giorno non valido: ”+giorno);
}
"Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
Linus Torvalds
Cioè nell'if io sto mi riferisco alla variabile d'istanza giusto?
Comunque il this serve a distinguere queste due variabili?
Allora io farei così:Cioè nell'if io sto mi riferisco alla variabile d'istanza giusto?
In questo modo viene controllato il valore del parametro giorno e non della variabile d'istanza giorno.Codice PHP:if (giorno>0 && giorno<=31)
siComunque il this serve a distinguere queste due variabili?
"Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
Linus Torvalds