Newsgroup: it.comp.java
Titolo: Generics

Sto leggendo un manuale su come programmare in Java e sono arrivato al
capitolo sui Generics.
Non ho capito bene cosa sono i generics, qualcuno puo' spiegarmelo?
In particolare non ho capito come creare propri tipi generic, perche'
il seguente programma non funziona?
Quando lo lancio mi appare il seguente messaggio:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
 at esempio21.Esempio21.main(Esempio21.java:7)
********** Esempio21.java **********
package esempio21;
import java.util.*;
public class Esempio21
{
 public static void main(String[] args)
 {
  ClasseTipo<String> ogg=new ClasseTipo<String>();
  ogg.aggiungi("Oggi è venerdi");
 }
}
class ClasseTipo <E>
{
 public ArrayList<E> arr;
 public ClasseTipo<E>()
 {
  arr=new ArrayList<E>();
 }
 public void aggiungi(E elemento)
 {
  arr.add(elemento);
 }
}

Aspettiamo con ansia che arrivi all'ultimo capitolo e ti levi dalle palle.
Omaggi.

 writes:
BB> Sto leggendo un manuale su come programmare in Java e sono arrivato
BB> al capitolo sui Generics.  Non ho capito bene cosa sono i generics,
BB> qualcuno puo' spiegarmelo?  In particolare non ho capito come creare
BB> propri tipi generic, perche' il seguente programma non funziona?
BB> Quando lo lancio mi appare il seguente messaggio:
Ma li guardi i messaggi di errore del compilatore ? :)
Hai sbagliato la sintassi della dichiarazione del costruttore.
-- 
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                   e coltivatore diretto               not install
                               di software                   Debian"
a Cesare avrei detto di scrivermi | I would have told Caesar to write
a 
fn...@rat.vg
                    | me at 
fn...@rat.vg

> Hai sbagliato la sintassi della dichiarazione del costruttore.
Grazie del consiglio adesso il programma funziona, pero' non ho ben
chiaro cosa sono i Generics e come funzionano, qualcuno puo'
spiegarmelo?

 non ho ben chiaro cosa sono i Generics
Servono per rendere type-safe un oggetto.
Ad esempio, se vuoi che un Vector accetti e restituisca solo oggetti String,
scriverai:
Vector<String> v = new Vector<String>();
In questo modo, se tenti di aggiungere un oggetto di tipo diverso, riceverai
un errore in compilazione. Di solito i generics vengono utilizzati con le
Collection.

 Collection.
Grazie della spiegazione.
In che consiste creare propri tipi generic?

 In che consiste creare propri tipi generic?
ti prego, compra un mac che ci vieni a far ridere anche su icm.
-- 
cc = callcc {|cc| cc.call cc}; cc.call cc

 Vector<String> v = new Vector<String>();
Diamine, cosi' me lo inizializzi ai Vector! Cosa hai fatto ?!?

 writes:
c6> anche su icm.
Oddio, quella si che è una cricca di fanatici religiosi :)
-- 
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                   e coltivatore diretto               not install
                               di software                   Debian"
a Cesare avrei detto di scrivermi | I would have told Caesar to write
a 
fn...@rat.vg
                    | me at 
fn...@rat.vg
P.S.
Felice di far girare Debian sul mio iMac Lamp...

 writes:
BB> Grazie della spiegazione.  In che consiste creare propri tipi
BB> generic?
Ma ne hai appena creato uno tu!
Usualmente si utilizzano  per creare da un lato  classi che lavorino con
una vasta schiera  di ingressi (i.e. un Vector  puo` contenere vari tipi
di oggetti), dall'altro per far si che il singolo oggetto sia da un lato
type-safe (ovvero, se hai detto che deve contenere String, allora non ci
puoi mettere OggettoDelMenga), dall'altro siano più comodi da usare.


 Oddio, quella si che è una cricca di fanatici religiosi :)
Oh, piano, io sono fra i top poster da anni! :)


> Oddio, quella si che è una cricca di fanatici religiosi :)
c6> Oh, piano, io sono fra i top poster da anni! :)
Si, ma guai a chi prova a dire che quella del Mac non è la migliore GUI,
si viene automaticamente passati in padella (magari mi ci hai pure
passato tempo fa)... :) :) :) :)
Peraltro, sempre il mio amico che lavora sul S.O. proprietario, citava 
felice UNA inconsistenza nell'assegnazione di uno shortcut ... :)


 felice UNA inconsistenza nell'assegnazione di uno shortcut ... :)
Uh, si. Qualcuna su OS X ce ne č. Non tantissime. Di quale parlava?


 Collection.
Come si fa a scrivere una cosa come la seguente?
MiaClasse<MioTipo> ogg=new MiaClasse<MioTipo>();

 Oddio, quella si che è una cricca di fanatici religiosi :)
ormai abbiamo invaso anche qua :)
Ciao Jack


I tutorial della SUN lo spiegano.
http://java.sun.com/docs/books/tutorial/extra/generics/index.html
Credo che basti scrivere
public class MiaClasse<T> {
	...
}

> ... :)
c6> Uh, si. Qualcuna su OS X ce ne è. Non tantissime. Di quale parlava?
Non lo ricordo, ma era felice (anche perché il Mac prende quota a
scapito di svista).


 scapito di svista).
Eh, bene no?


 ormai abbiamo invaso anche qua :)
e nessuno si salverà... :)
-- 
Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://softvalley.blogspot.com

 e nessuno si salverà... :)
buahahaha.
tanto se apple prosegue la strada corrente sul supporto a java...


> pronta a prendere ordini per automatizzare le cose.
c6> IMHO sono semplicemente due modi diversi di interfacciarsi alla
c6> macchina.
Ci sono due modi per comunicare, a gesti e a parole. Io preferisco
comunicare a parole
                                Chiara Paci, Pluto Meeting 1999
c6> Per altre cose, trovo le gui semplicemente comode o
c6> insostituibili. Per esempio trovo un client di posta grafico più
c6> comodo di uno testuale (in genere). Mi da più colpo d'occhio.
Siccome poi rispondo e sono prolisso, ne preferisco uno con un buon
editor ;)
c6> Per cose come mettere a posto le foto delle vacanze trovo iPhoto
c6> estremamente più comodo di imagemagick.
Per una foto, The Gimp è sicuramente più comodo. Per fare N volte
la stessa operazione su N foto, Imagemagick ed uno script :)
c6>  Io stesso tempo fa avevo usato gnus e
c6> mi pareva di ricordare che funzionasse.
Devo verificare. Temo un bug di GNUS da CVS.


 Devo verificare. Temo un bug di GNUS da CVS.
Puň essere.


> editor ;)
c6> Mutt ha il *miglior* editor. Per definizione parametrica di
c6> migliore, in quanto semplicemente dipende quale editor gli dici di
c6> usare. Chiaro, uno poi puň essere masochista e dirgli di usare
c6> ed[0]. :)
Vero, ma quando quello che consideri come migliore editor legge la posta
e oltretutto si adatta in questo alle tue paturnie (posta scaricata in
locale in ufficio, IMAP a casa) :) :)
c6> Indovina quanto č durato l'IDE come
c6> IDE dopo questa scoperta.
Misurabile fisicamente il tempo o solo deducibile per via teorica ? :)
c6> Gimp stesso č pesantemente scriptabile. 
Infatti, in scheme (poi hanno aggiunto perl e python). Il problema non č
scheme, ma sono i nomi degli oggetti da richiamare.
c6> Il vantaggio principale della linea di comando č che č un formalismo
c6> *indubbiamente* piů semplice.
Il problema č nel nome delle cose. Non č la linea di comando, č la
shell, la stessa che ti permette di comporre "le parole" in "discorsi"
c6> sconveniente offrire una funzione da GUI che risolva quella
c6> specifica classe di compiti.
Il mio WM č pieno di cosine attivate "a click" costruite a colpi di
script: quando il discorso č sempre quello, un click puň essere il piů
rapido. Ma rinuncio ai click piuttosto che alla shell.
