2012-10-21 5 views
0

J'avais besoin d'une "base de données" dynamique d'objets et après quelques recherches, j'ai décidé d'utiliser ArrayList. Cependant, je ne peux pas modifier le arraylist avec le code comme suit:Modifier des objets dans ArrayList

public static ArrayList cprofiles; 
... 
cprofiles = new ArrayList(); 
... 
... 
Customer newc = new Customer (lna, fna, sinum, year, month, day); 
cprofiles.add (newc); 

Après cette déclaration, je suis en train d'appeler des méthodes dans l'objet en utilisant le format suivant cprofiles.get(0).getName() mais je reçois une erreur indiquant

ne peut pas trouver le symbole (pointant vers .getName())

lorsque je tente de compiler le programme. J'ai passé environ une heure à chercher la bonne méthode pour modifier ceci dans une ArrayList mais les sources que j'ai trouvées semblent suggérer que ce que je fais est correct. S'il vous plaît aidez-moi à repérer mon erreur et comment je peux le réparer.

Merci!

+2

Il se pourrait également que 'cprofiles.get (0)' ont besoin d'être casté (ou la liste à 'new ArrayList ()'). –

+1

ou public static ArrayList cprofiles – chrome

Répondre

6

Vous devez utiliser la version générique de ArrayList, et non la version brute:

List<Customer> cprofiles = new ArrayList<Customer>(); 

Si vous utilisez juste ArrayList, le compilateur ne sait pas ce que votre liste contient, donc tout est considéré comme un Object . Et donc vous avez besoin de jeter l'objet retourné à son type réel:

Customer c = (Customer) list.get(0); 
+0

Ah putain. Comment ai-je manqué ça? Pensé qu'il avait déclaré une ArrayList avec le paramètre type. La hâte fait des déchets :) – CKing

+0

@bot vous voulez dire "* haste * fait des déchets"? –

+0

A prouvé ce point encore une fois. :) Correction automatique sur les claviers de téléphone portable peut parfois être une douleur. – CKing