Newsgroup: it.comp.java
Titolo: [niubbo] Esempio Rubrica da Array ad Arraylist

Salve sto studiando Java e mi sono imbattuto nel solito esempio della 
rubrica:
class Rubrica {
   // Attributi
   private Persona[] elencoPersone;
   private int       numeroPersone;
.....
Qua si capisce bene che elenco elencoPersone è un array del tipo Persona.
Se dovessi passare ad arrayList otterrei una cosa tipo:
class Rubrica {
   // Attributi
   private arrayList elencoPersone;
....
Capisco che in ogni caso poi dove usare un metodo per agire su 
elencoPersone, quindi so che passo un oggetto di tipo Persona, ora la 
mia domanda è: E' giusto come ho riscritto la classe usando arrayList?
Non c'è modo di esplicitare che l'arrayList deve essere un arrayList di 
oggetti di tipo Persona?
Grazie a tutti, scusate se ho posto una domanda che per i veterani di 
Java è una cosa ovvia, prima di postare ho cercato sui 4 libri di java 
che ho, ho cercato su google e si trova sempre la stessa cosa 
lista.add(new tipoggetto); ma non è spiegato quello che vorrei sapere io :(

 io :(
Non conta essere veterano per dare un suggerimento o magari solo un 
aiuto seppur sbagliato...
L'uomo che muove le montagne, porta dapprima le pietre una per una...

 L'uomo che muove le montagne, porta dapprima le pietre una per una...
Grazie ancora per la delucidazione.


No, fino alla 1.4 dovevi fare un controllo (o intercettare la
ClassCastException).
Ora, dalla 1.5 PUOI dichiarare il tipo dell'oggetto che inserisci nella
Collection.
In tal caso, se prendi un errore lo prendi a compile-time invece che a
run-time.
Cerca "Generics" sul sito della SUN

 
import java.util.*;
public class Ex2 {
   private void testCollection() {
     List<String> list = new ArrayList<String>();
     list.add(new String("Hello world!"));
     list.add(new String("Good bye!"));
     list.add(new Integer(95));
     printCollection(list);
   }
Uaa il tipo racchiuso fra < > già mi sento confuso :D
Ecco perfetto list.add(new Integer(95)); genera un errore in fase di 
compilazione, in più a colpo d'occhio si vede che posso inserire solo 
String.
Grazie della dritta...ora mi leggo bene bene l'articolo e vedo di capire 
come funzionana questa sintassi < > che mi è aliena

Guarda, se vuoi ci sono anche degli articoli fatti bene su mokabyte

 
Si trovati grazie... Andrea G. negli articoli spiega pure < > ottimo 
ottimo :)

 oggetti di tipo Persona?
Dal java 1.5 si (vedi i generics).

Come ti dicevo prima, prova a dare uno sguardo a questa classe e se fa 
al caso tuo usala...
http://www.dis.uniroma1.it/~cadoli/didattica/fond2/programmi_java/InsiemeSS.java

 composizione permette una migliore manutenzione)
L'ereditarietà è un errore di design in questo caso. Per dirne una,
fa si che i metodi di ArrayList siano esposti direttamente e con ogni
probabilità non è ciò che si vuole (anzi è dannoso).
Questo è un tipico caso in cui si implementa un wrapper.

Beh, dipende.
Non ne sappiamo abbastanza da capire se per esempio avere un remove() a
disposizione è utile (alla sua causa) oppure no.

 
utile :)
Mi fa piacere vedere che la mia domanda è stata meno banale di quanto mi 
  fosse sembrata all'inizio.
E come sarebbe usando un wrapper?

 
Grazie vado a guardare :)

 E come sarebbe usando un wrapper?
Niente di particolare, in pratica è quello che stai facendo.

 disposizione è utile (alla sua causa) oppure no.
Beh, il problema è abbastanza generico e comunque è buona norma
generalizzarlo per ricondurlo ad un design pattern. Non è comunque
questo l'utilizzo giusto dell'ereditarietà.
Fra l'altro in java non c'è l'ereditarietà multipla, per cui così
facendo ti "bruci" la possibilità di [fare|derivare da] una
generalizzazione. Se proprio serve che la classe implementi
l'interfaccia List è corretto aggiungere l'interfaccia alle implements
e implementare i metodi, ovviamente delegando alla collection interna.