n° 185
Maggio/Giugno 2013
Maggio 25, 2013, 11:13:26 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [Java] generics domande  (Letto 956 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
vittorio130881
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo E-mail
« inserita:: Febbraio 20, 2013, 10:54:03 am »


ciao a tutti
allora oggi domanda su generics.

Prima domanda: guardate questo esempio di 3 classi semplicissime:

Codice:
Codice:
public class Persona
{
protected String nome, cognome;
protected int eta;


public Persona(String nome, String cognome, int eta)
{
this.nome = nome;
this.cognome = cognome;
this.eta = eta;
}
}

public class Professore extends Persona
{
  public Professore (String nome, String cognome, int eta)
  {
  super(nome,cognome,eta);
}
}



public class Studente extends Persona
{
public Studente(String nome, String cognome, int eta)
  {
  super(nome,cognome,eta);
 }
}



import java.util.Vector;

public class Archiviol
{
protected Vector persone;


public Archiviol()
{
persone = new Vector(10);
}


public void aggiungi(Persona p)
{
persone.add(p);
}


public void rimuovi(Persona p)
{
persone.remove(p);
}


public Persona get(int index)
{
return (Persona)persone.get(index);
}


}


quindi archivio è un vettore normalissimo.....non capisco nulla ma dico nulla dell'ultimo metodo get?? io i get li ho visti sempre senza richeiste di parametro.......mah.....secondo cosa significa quella (Persona) fra parentesi?


Ultima domanda non meno importante.......la soluzione con i generic l'ho capita e non la posto ma mettere <E> oppure <N> oppure <T> è la stessa cosa o significano cose differenti in base alla lettera? grazie
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 324


Mostra profilo E-mail
« Risposta #1 inserita:: Febbraio 20, 2013, 12:01:22 pm »

Scrivere il metodo
Codice:
public Persona getPersona(int index)
{
return (Persona)persone.get(index);
}
significa "chiamando il metodo getPersona() e passando un indice int index esso ci ritornerà con return la persona con indice uguale a quello passato, ma per far questo, siccome il Vector non ha un generics associato, esso tirerebbe fuori un Object e non una Persona e per far ciò è necessario fare un cast a (Persona)
Registrato
vittorio130881
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo E-mail
« Risposta #2 inserita:: Febbraio 20, 2013, 12:13:04 pm »

mitico !!! era un cast.....
ok e invece alla seconda domanda? sai rispondermi? T E V sono lettere convenzionali o hanno significato? grazie mille
ciao
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 324


Mostra profilo E-mail
« Risposta #3 inserita:: Febbraio 20, 2013, 12:19:19 pm »

Ecco... lo sentivo che dimenticavo qualcosa...
Leggiti http://it.wikipedia.org/wiki/Generics_Java e vedi che ti è molto più semplice.
in particolare
Codice:
List<Integer> myIntList = new LinkedList<Integer>();
Cosa significa???
Siccome List e Vector accettano oggetti di diverso tipo (Cani e Porci per capirci) possiamo stabilire che Persone accetti oggetti solo di tipo Persona e niente altro.
Come si legge sempre nel link....
Citazione
Dichiarare
List<Integer> myIntList = new LinkedList<Integer>();
equivale a livello di codice a dichiarare
List myIntList = new LinkedList(); // Lista di Object
e ad eseguire implicitamente le conversioni Object->Integer e Integer->Object per leggere e scrivere gli elementi.
Registrato
vittorio130881
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo E-mail
« Risposta #4 inserita:: Febbraio 20, 2013, 12:30:17 pm »

perfetto ma nel mio libro ci sono casi di metodi generici che hanno <T> e poi gli passa sia stringhe che interi al metodo......... tipo

Codice:

public <E> void  Printarray (E el [])
{ for (E i :el)
     system.out.print(i+" ")



in chiamata di questo metodo in una classe differente abbiamo

 Double d[]={11.1,11.2};
string s[]={"sono", '"una", '"stringa"};

e poi

pag.printarray(d);
pag.printarray(s);


dove pag è una istanza della classe contenente printarray.


immagino questo sia un utilizzo diverso dei generics.......E dice che sta per elements N per numbers.....
ma sono lettere casuali???
Registrato
bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 324


Mostra profilo E-mail
« Risposta #5 inserita:: Febbraio 20, 2013, 12:37:42 pm »

T is meant to be a Type
E is meant to be an Element (List: a list of Elements)
K is Key (in a Map)
V is Value (as a return value or mapped value)
Risposta presa da http://stackoverflow.com/questions/6008241/java-generics-e-and-t-what-is-the-difference in cui v'è scritto che tra queste non v'è una vera differenza. Troverai forse anche <?> di cui però non so nulla (anche se potrei indovinare) che è differente.
Registrato
vittorio130881
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 12


Mostra profilo E-mail
« Risposta #6 inserita:: Febbraio 20, 2013, 12:45:54 pm »

grazie!
Registrato
janssn8dv5
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2



Mostra profilo E-mail
« Risposta #7 inserita:: Aprile 03, 2013, 11:23:29 pm »

ciao a tutti
allora oggi domanda su generics.  Felice

Prima domanda: guardate questo esempio di 3 classi semplicissime.  Fico
Registrato

bertolottipf
Full Member
***

Karma: +4/-4
Scollegato Scollegato

Messaggi: 324


Mostra profilo E-mail
« Risposta #8 inserita:: Aprile 04, 2013, 04:03:05 pm »

Che?!?
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page