Java.lang.reflect.Field;

Résolu
zarmin Messages postés 49 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 16 avril 2008 - 21 déc. 2006 à 11:15
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 31 déc. 2006 à 18:10
Bonjour,

Je cherche a recuperer toutes les variables d'une classe (ou il n y a que des strings), et les remplir par de nouvelles valeurs.

Exemple de ma classe :

public class helloWold()
{

    String myString1 = "test1";

    String myString2 = "test2";

    String myString3 = "test3";

    String myString4 = "test4";
}

public static void main(String[] args) {
Field myField[] = helloWold().class.getFields();

            for (int i = 0; i < myField.length; i++)
            {
                System.out.println(myField[i].getName()); //recupere la valeur de la String
            }
}

Donc j'arrive bien a recuperer les valeurs de toutes les String mais maintenant je cherche a les remplir. J'ai essaye le set() mais je me sens un peu perdu avec les Fields... Est il possible de remplir une String ainsi ? et si oui comment ?

Merci d avoir lu et de vos idees par avance

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
21 déc. 2006 à 11:52
Salut,

tiens voici un exemple :

import java.lang.reflect.Field;

public class HelloWold {
    public String    myString1    = "test1";
    public String    myString2    = "test2";
    public String    myString3    = "test3";
    public String    myString4    = "test4";

    public static void main(String[] args) {
        Field myField[] = HelloWold.class.getFields();
        Object instance = new HelloWold();//récupération de l'instace sur l'objet HelloWold dans le but de pouvoir faire des get et set de la valeur
        for (int i = 0; i < myField.length; i++) {
           
            System.out.println(myField[i].getName()); //recupere le nom de la String
            try {
                System.out.println(myField[i].get(instance)); //recupere la valeur de la String
                myField[i].set(instance, "toto"+(i+1));
                System.out.println("new value = " + myField[i].get(instance)); //recupere la nouvelle valeur de la String
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            System.out.println();
            System.out.println();
            System.out.println();
            System.out.println();

        }
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
zarmin Messages postés 49 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 16 avril 2008
21 déc. 2006 à 14:06
merci  cest cool :)
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
31 déc. 2006 à 18:10
salut,

maintenant si c'est un VRAI bean, les fields sont privés et on se prend un IllegalAccessException...dans ce cas, on peut utiliser les classes de java.beans et plus particulièrement Introspector et PropertyDescriptor...

ShareVB
0
Rejoignez-nous