|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
[java] che significa il simbolo <E>
spesso trovo interfacce o classi scritte in questo modo
Codice:
public interface SortedSet<E> extends Set<E> |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
viene utilizzato il meccanismo dei generics: http://java.sun.com/j2se/1.5.0/docs/.../generics.html
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E' colpa sua:
![]() ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
|
Ragazzi, in pratica vi sta chiedendo di spiegare in parole semplici cosa sono i generics, a che servono e perché sono stati introdotti
![]() Io non mi cimento perché ci ho avuto poco a che fare e piuttosto preferirei imparare da uno che li conosce più a fondo, però, orsù! ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() x MaxArt: i generic sono il male. Per maggiori informazioni, chiedi a PGIBis. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6661
|
Quote:
![]() ![]() No, per me, o meglio per quanto li ho usati, i generics sono per lo più una rottura di balle. A questo punto, però, vorrei sapere da te perché li consideri una cosa cattiva. E chi è PGIBis? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Mar 2008
Messaggi: 96
|
i generics sono un modo per creare strutture che si possono adeguare al tipo di dati.
per esempio i set sono tipi generici (cioè come tu l'hai fatto vedere è dichiarato come Set<E>) nel momento in cui tu dichiari un istanza di un set puoi specificare di che tipo è il set: Set<Object> s1 = new Set<Object> (); Set<Punto> s2 = new Set<Punto> (); Set<Triangolo> s3 = new Set<Triangolo> (); s1 avrà Object come tipo di dati nel set s2 avrà Punti s3 avrà Triangoli se tu fai s3.add(new Punto) non compilerà in quanto s3 è accetta solo quello che è triangolo (supponendo che la classe Punto non estenda la classe triangolo) invece puoi fare s3.add(new Triangolo) la differenza vera la vedi nel momento in cui devi estrarre i dati dal Set in quanto in s2 ti vengono restituiti direttamente come Punto (senza i generics ti vengono restituiti come Object e devi fare il cast a punto) e in s3 ti verranno restituiti come Triangolo. il problema è nello scrivere la classe Set<E> che diventa un pò delicato per alcune questioni dei Generics, all'interno della classe dovrai riferirti al tipo E per indicare il tipo che verrà stabilito dai generics. inoltre puoi impostare delle regole per i tipi generics (per esempio obbligare ad estendere una certa classe), oppure puoi dichiarare generici rispetto a più tipi (come le Map che sono generiche rispetto a due tipi, uno la chiave l'altro il valore). se tu istanzi un Set senza specificare il tipo puoi assumere di aver dichiarato un Object anche se questa è una grande semplificazione e anche scorretta. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: May 2008
Messaggi: 412
|
Gelert sei stato molto esaustivo,adesso devo trovare un buon libro java perchè nel mio non c'è questo argomento.
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
boh sarò limitato ma tutto sto male non ce lo vedo io....
![]() |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Guardate che io non ho nulla contro i generic (a parte la loro ORRIBILE sintassi).
Purtroppo non sono riuscito a recuperare un messaggio di PGI-Bis in cui parlava proprio di questo strumento (del demonio ![]() A parte questo, l'implementazione Java non è esente da difetti.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12840
|
I generics servono ad evitare boxing ed unboxing principalmente, e dunque sul piano prestazionale consentono di avere un efficienza maggiore.
La sintassi è una questione soggettiva, ma devo dire che anche a me non è che mi facciano impazzire (soprattutto se volessi creare strutture "ricorsive"). Tra l'altro mi piacerebbe sapere cosa succede in questi due casi: Classe<T> prova = new Classe<T>(); Classe<T> prova = new Classe(); A quanto ho visto sono due sintassi equivalenti (NetBeans non lo segnala come errore, ad Eclipse da fastidio). Parlando di sintassi spero vivamente che JDK7 implementi l'inferenza dei tipi a tempo di compilazione (in modo simile a C#), ad esempio: var prova = new Classe<T>(); Ultima modifica di WarDuck : 29-03-2010 alle 10:27. |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Parli con uno che i generic in Java li ha usati, quando sono serviti, turandosi il naso per la sintassi lunga e criptica.
Il problema non è tanto il mio (che non lavoro più in Java, tra l'altro), ma dei "puristi". ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
@Prince_81:
Qua [Angelika Langer - Generics FAQ] trovi di tutto e di più sui Generics in Java. Roba da ![]()
__________________
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) |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
A me non piacciono già i linguaggi con sintassi C-like, e il C++ che aggiunge cripticità alla sintassi (specialmente coi template) non fa che peggiorare le cose.
![]() Ma è una questione di gusti, sia chiaro. Le funzionalità esposte da un linguaggio, tolta di mezzo la sintassi, non vanno cestinate oppure osteggiate per partito preso. Certo, in alcuni casi fanno a pugni con la teoria (se non ricordo male PGI-Bis poneva il problema della varianza e/o controvarianza introdotta dai generic; sfortunatamente non ricordo i termini della questione; il messaggio che scrisse esponeva in maniera precisa e rigorosa i termini della questione, ma non sono riuscito a rintracciarlo), ma da programmatore devo necessariamente essere pragmatico e "turarmi il caso", come dicevo prima, se qualcosa la devo usare anche se non mi piace (d'altra parte la notte, quando posso, lavoro in C, per cui ho la mia buona dose di autofustigazione ![]() Per quanto riguarda l'implementazione dei generic in Java, il link che ho postato prima espone il concetto di generic e l'implementazione di C# e Java, descrivendo i pregi e i difetti. Consiglio a tutti di leggerlo, perché è molto interessante.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:40.