IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[Reflection] Conversion de tableaux


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    hdd
    hdd est déconnecté
    Membre confirmé Avatar de hdd
    Profil pro
    Inscrit en
    Février 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 105
    Par défaut [Reflection] Conversion de tableaux
    Bonjour,

    J'ai une fonction renvoyant un tableau d'objets (code exemple pour l'instant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public static Object[] methodeEssai(String in_classe) throws Exception
      {
        Class lc_classe = Class.forName(in_classe);
        Class lc_parametres[] = new Class[1];
        lc_parametres[0] = Class.forName("java.lang.String");
        Constructor lc_constructeur = lc_classe.getConstructor(lc_parametres);
        String lc_param[] = new String[1];
        Object[] in_tableau = new Object[5];
        lc_param[0] = "0";
        in_tableau[0] = lc_constructeur.newInstance(lc_param);
        lc_param[0] = "1";
        in_tableau[1] = lc_constructeur.newInstance(lc_param);
        lc_param[0] = "2";
        in_tableau[2] = lc_constructeur.newInstance(lc_param);
        lc_param[0] = "3";
        in_tableau[3] = lc_constructeur.newInstance(lc_param);
        lc_param[0] = "4";
        in_tableau[4] = lc_constructeur.newInstance(lc_param);
        for(int i = 0;i < Array.getLength(in_tableau);i++)
        {
          System.out.println("Indice " + i + " : " + ((Integer) in_tableau[i]).intValue());
        }
        return in_tableau;
      }
    et je voudrais récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Integer[] lc_entiers = methodeEssai("java.lang.Integer");
    Mais le compilateur me met une erreur. Ne peut-on pas convertir un tableau d'Object en tableau d'Integer, Character, ...

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut Re: [INTROSPECTION]Conversion de tableaux
    Salut,

    Citation Envoyé par hdd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Integer[] lc_entiers = methodeEssai("java.lang.Integer");
    Mais le compilateur me met une erreur. Ne peut-on pas convertir un tableau d'Object en tableau d'Integer, Character, ...
    C'est normal puisque ta méthode renvoit un tableau d'Object et que tu l'affectes à un tableau d'Integer... ce qui n'est pas la même chose (un tableau d'Object peut conteneir n'importe quel type d'objet).
    Il faut que tu spécifie au compilateur que le tableau d'Objet retourné est bien un tableau d'Integer avec un cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer[] lc_entiers = (Integer[]) methodeEssai("java.lang.Integer");
    Par contre tu as un second problème dans ton code car pour pouvoir caster un Object[] en Integer[] il faut que ce dernier soit bien un Integer[]... Or lorsque tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] in_tableau = new Object[5];
    Tu crées un tableau d'Object[]...

    Il faudrait remplacer ce code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] in_tableau = (Object[]) Array.newInstance(lc_classe,5);
    a++

  3. #3
    hdd
    hdd est déconnecté
    Membre confirmé Avatar de hdd
    Profil pro
    Inscrit en
    Février 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2004
    Messages : 105
    Par défaut
    J'avais bien essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer[] lc_entiers = (Integer[]) methodeEssai("java.lang.Integer");
    , mais comme je ne créais pas correctement mon tableau, ça ne marchait pas (ClassCastException).

    Maintenant, ça marche !!!

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2010, 08h39
  2. [Tableaux] Conversion array -> object
    Par Roromix dans le forum Langage
    Réponses: 4
    Dernier message: 18/05/2007, 23h26
  3. Réponses: 5
    Dernier message: 05/04/2007, 16h17
  4. Conversion de tableaux
    Par despeludo dans le forum Framework .NET
    Réponses: 2
    Dernier message: 19/01/2007, 00h23
  5. Réponses: 1
    Dernier message: 03/01/2007, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo