|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#141 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Con il filosofico non mi riferivo alla differenza valore, riferimento (ci mancherebbe) ma alle mie considerazioni a riguardo delle nomenclatura nei post precedenti.
All' atto pratico l' importante è comprendere che, in java, le istanze vengono puntate attraverso variabili reference, e queste vengono copia al momento del passaggio, per cui eventuali modifiche allo stato dell' oggetto hanno effetto, mentre eventuali assegnamenti hanno solo scope locale alla funzione. |
|
|
|
|
|
#142 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
In sintesi funziona tutto semplicemente così senza tirare in ballo passaggi per riferimento che NON esistono in java.
__________________
|
|
|
|
|
|
|
#143 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Solo che se il valore passato del tipo primitivo è un riferimento si ha il passaggio per copia del riferimento che non è altro che un caso specifico dell'unico metodo esistente di passaggio dei parametri in java: il passaggio per copia del valore.
__________________
|
|
|
|
|
|
|
#144 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Funziona ESATTAMENTE così. Java passa per copia solo il valore dei tipi primitivi. Che poi esista un tipo primitivo di tipo reference è assolutamente ininfluente, il passaggio resta sempre per copia del valore.
__________________
|
|
|
|
|
|
|
#145 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Mai parlato di passaggio per riferimento, ma di copia del riferimento (trattato esattamente come gli altri primitivi) che è esattamento ciò che java fa.
Inoltre ho posto l' attenzione dalla prospettiva oggetto in se, rappresentato dalla variabile reference.per cui essendo vero che le variabili vengono passate per copia, un oggetto viene passato (vedendolo in maniera astratta, perchè java non ha, di fatto, variabili che contengono oggetti)copiandone il suo riferimento. Sia chiaro, siamo concordi sul modo in cui avviene il passaggio (del resto è una specifica), ma dal punto di visto della terminologia ho presentato la mia idea, condivisibile o meno. |
|
|
|
|
|
#146 | ||
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Le specifiche del linguaggio Java 3° edizione dicono questo: Quote:
__________________
|
||
|
|
|
|
|
#147 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Java manipola gli oggetti attraverso riferimenti, tali riferimenti vengono passati per copia (o per valore). Cosa ci sarebbe di sbagliato? Anche perchè affermare che sia sbagliato, presuppone che la "copia del reference" abbia un significato differente. Ultima modifica di nuovoUtente86 : 05-05-2010 alle 11:44. |
|
|
|
|
|
|
#148 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
|
|
|
|
|
#149 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Quello che voglio sottolineare è che non mi piace etichettare come,"tutto per copia" e bon, non fosse altro perchè ciò può generare confusione in chi si approccia al linguaggio |
|
|
|
|
|
|
#150 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Poi gli si lascia capire, oppure gli si spiega esplicitamente, che in Java le istanze degli oggetti non sono passate; mai. Ciò che viene passata è la copia del riferimento all'oggetto, la reference. Credo che per un neofita la cosa che può generare qualche incertezza/incomprensione, se non ben spiegata (specie se il neofita è tale non solo esclusivamente dal punto di vista del linguaggio) è abituarsi a leggere questa sintassi: Codice:
Object o = new Object(); E' neccesario per il neofita capire che ciò che sta a sinistra dell'operatore '=' non è "l'oggetto" ma il "riferimento all'oggetto" (Java reference) e ciò che sta a destra dell'operatore '=', in particolare il prodotto dell'operatore 'new', è "l'stanza dell'oggetto". E che è la reference che viene passata ai metodi, e viene passata per copia. Poi ci sono i tipi primitivi, e dato che non possono essere indirettamente referenziati (proprio perchè in Java non esistono i pointer, ne pointer operators e neanche pointer arithmetic) possono essere passati solo per copia. Risultato: in Java gli argomenti dei metodi invocati sono sempre e solo passati per copia. Ripeto il punto che sintetizza al massimo la questione: Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 05-05-2010 alle 15:05. Motivo: corretto una svista |
||
|
|
|
|
|
#151 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
credo sia, già, stato postato un link esterno all' inizio di questa discussione ad un interessante trafiletto di J. Gosling che esplicita bene la questione.
Quote:
|
|
|
|
|
|
|
#152 | ||
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:07.




















