2010-08-24 4 views
1

J'ai une liste de bean, maintenant je veux changer la valeur d'un attribut de tous les beans dans la liste. Par exemple:Comment changer la valeur d'un attribut d'un bean dans la liste?

class Person{ 
    String name; 
    int age; 
    String attrXYZ; 

    /* accessors and mutators */ 
} 

List<Person> lstPerson = getAllPersons(); 
//set the attribute attrXYZ of all persons in the list to 'undefined' 

Une façon est de parcourir la liste et appelez setAttrXYZ ('undefined'); ce que je fais en ce moment.
Je voudrais savoir s'il existe une autre approche pour ce faire.

Répondre

1

C'est l'avantage des langages dynamiques comme Groovy, où vous pouvez le faire comme un paquebot:

myList.each{ it.setAttrXYZ ('undefined') } 

En java, le chemin le plus court est soit d'utiliser des boucles de Java 5 ou itérateurs:

for(MyBean bean : list){ 
    bean.setAttrXYZ ("undefined"); 
} 

ou

Iterator<MyBean> it = list.iterator(); 
while(it.hasNext()){ 
    it.next().setAttrXYZ("undefined"); 
} 

(les deux qui est à peu près la même chose en interne)

+2

Peu importe la quantité de sucre syntactique ou de code dynamique que vous lancez, il s'agit simplement d'une simple boucle sur la liste qui applique du code à chaque élément. –

+0

en interne, oui. Mais pour le développeur, il peut s'agir de: "est-ce que je veux vraiment traverser tous ces problèmes?" vs "hey, pas un problème". (Pas dans ce cas trivial bien sûr) –

+0

woa, j'aime bien ce code groovy liner [même si ce n'est pas en java] :) –

2

Malheureusement, même en utilisant la réflexion, vous devriez parcourir votre liste. Par conséquent, autant que je sache, il n'y a pas d'autre solution à cela.

+0

Malheureusement, je dois accepter cela. –

Questions connexes