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
5373
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
10 août 2022
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
25
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