Newsgroup: it.comp.java
Titolo: [j2se1.5]Generic Java

Da alcuni giorni ho scaricato la jsr 14 dal jcp con la versione "patchata" 
del javac
per il supporto alla programmazione generica. Sembra che questa feature
sarà introdotta nel j2se1.5. Ho fatto un po' di test e mi sono già 
appassionato a java con i template. Devo ammettere infatti che una lista
dichiarata come 
List<Integer>myList = new ArrayList<Integer>();
è molto più espressiva in fase di compilazione di
List myList = new ArrayList();
Sembrerà stupido ma per me è bellissimo vedere un bell'errore a compile time 
quando 
provo a fare qualcosa tipo
myList.add( "pippo" );
Ora vengo alla mia domanda: secondo voi è conveniente passare già da ora a 
questa nuova "mentalità" in modo da trovarsi pronti all'avvento del J2SE1.5 
oppure c'è il rischio che magari tra qualche mese mi ritrovo con del codice 
incompatibile? E poi, allargando il discorso: le "versioni intermedie" 
scaturite dal Java Community process sono "affidabili", nel senso: ci si 
può già lavorare sopra o è meglio "pazientare" (avrete già capito che 
questo non mi piace molto :-) e attendere la release definitiva? 
Spero di poter leggere qualche vostra interessante opinione in merito
buone feste a tutti
pole

buone feste a tutti
Io avrei una domanda: che sono i generics? Non avendo molto background
in C++ non conosco i template e nemmeno il paradigma di programmazione
generica..di che si tratta in concreto?
Rhymes

 generica..di che si tratta in concreto?
Sono tipi T0 che dipendono da altri tipi T, dove T e' definito al momento 
dell'uso (dichiarazione) di variabili di tipo T0.
Immagina poter scrivere
class Sommatore<T> {
    	T somma(T op1, T op2) { return op1 + op2 }
}
e usarlo con
Sommatore<int> s = new Sommatore<int>();
int a = s.somma(1, 5);
e il compilatore ti controlla risolve tutte le dipendenze (nel caso, il 
fatto che l'operatore "+" sia definito per il tipo T in questione.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 ritrovo con del codice incompatibile? 
Premetto che per ora ho poco piu' che letto la specifica, quindi la mia 
opinione vale $.005, ed e' provvisoria. :) 
Per "giocarci", certamente si'. Del resto, la programmazione generica e' 
gia' "mainstream" - nel senso che quasi tutti sono d'accordo sia cosa 
buona. Per codice in production, mi par presto - per i soliti motivi: c'e' 
ancora un sacco di gente che usa l'1.3.


 generica..di che si tratta in concreto?
Per farla semplice (nemmeno io sono in grado di "esaurire" il concetto) si 
tratta di uno stile di programmazione in cui anche il "tipo" degli oggetti 
è considerato un parametro. Siccome sono un "fan" di Carlo Pescio ti 
suggerisco questo link:
http://www.eptacom.net/pubblicazioni/pub_it/oopgen.html
ciao :)
pole

 
Il byteCode prodotto dovrebbe essere retrocompatibile. Io sto facendo le 
prove col JDK1.4 e lancio le classi con la JVM tradizionale senza problemi. 
Infatti almeno per ora il compilatore non fa altro che generare in 
automatico tutti i vari cast che prima facevo a mano, utilizzando come tipi 
base le "vecchie" classi. A runtime infatti due oggetti definiti come:
A<T> a = new A<T>();
A<T1> b = new A<T1>();
facendo una getClass().getName() stampano entrambi "A".
Per cui quello che più mi preoccupa è il fatto che le scelte fatte, a 
livello sia di sintassi che di semantica, rimangano tali o perlomeno non 
vengano stravolte. Per cui seguirò certamente il tuo consiglio sulla 
production (su server meglio non "giocare" :-), ma cmq mi dispiacerebbe se 
il piccolo game platform che sto scrivendo per diletto dovesse perdere la 
terra sotto i piedi (=compilatore) col prossimo JDK. In sostanza la morale 
è: ciò che esce dal JCP come approvato è già pronto per la prossima release 
del jdk disponibile oppure può ancora essere pesantemente stravolto?
ciao :)
pole

fatto che l'operatore "+" sia definito per il tipo T in questione.
grazie
Rhymes