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

Collection et Stream Java Discussion :

Creation d'un array multidimentionnel avec la reflection


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Par défaut Creation d'un array multidimentionnel avec la reflection
    Bonjour,

    En faisant des recherches sur la création d'un array multidimentionnel avec la reflection je suis tombé sur cette page:
    http://java.sun.com/docs/books/tutor...raySetGet.html

    Il existe deux solutions pour créer un array.
    La première est de faire un Array.newInstance avec le type de classe de l'array et la taille de toutes ces dimensions dans un tableau. Cela fonctionne bien pour moi.

    La deuxième solution consiste a créer l'array niveau par niveau. L'exemple suivant est donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Object matrix = Array.newInstance(int.class, 2);
    Object row0 = Array.newInstance(int.class, 2);
    Object row1 = Array.newInstance(int.class, 2);
     
    Array.setInt(row0, 0, 1);
    Array.setInt(row0, 1, 2);
    Array.setInt(row1, 0, 3);
    Array.setInt(row1, 1, 4);
     
    Array.set(matrix, 0, row0);
    Array.set(matrix, 1, row1);
    Si je copie tel quel le code suivant et l'execute dans mon environement (java 6), j'obtiens une exception !! Quelqu'un sait-il pourquoi et surtout quelqu'un connait-il un moyen de créer un array multidimentionnel avec des tailles qui peuvent varier (il me semble que la solution que je viens de donner est la seule mais elle ne fonctionne pas chez moi...). Pour donner un exemple j'aimerais créer l'équivalent de cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int[][] values = new int[2][];
    values[0] = new int[4];
    values[1] = new int[2];
    Merci

  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
    Salut,


    Lorsque tu utilises la reflection, tu dois préciser le bon type. Or ton objet "matrix" n'est pas un tableau int mais un tableau d'int[], donc tu devrais plutôt faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object matrix = Array.newInstance(int[].class, 2);

    Mais la reflection permet surtout de manipuler dynamiquement le type du tableau et non pas sa taille. Si tu dois uniquement modifier la taille je ne vois pas ce qui t'empêche d'utiliser le second code que tu as donnée...


    a++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Par défaut
    Effectivement cela doit être la solution. En fait le code avait une erreur dans la page que j'ai trouvée.

    Dans mon cas je dois créer un tableau comme celui que j'ai donné dans le second code mais à partir d'un object class. Pour l'exemple j'ai mis int mais cela pourrait être n'importe quelle autre classe. J'ai donc besoin de la reflection.

    En tout cas merci pour ta réponse

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/03/2011, 11h43
  2. Réponses: 3
    Dernier message: 27/04/2009, 17h55
  3. Réponses: 16
    Dernier message: 16/08/2006, 15h24
  4. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 14h26
  5. creation d'utilisateur sous interbase avec tous les droits
    Par devalender dans le forum InterBase
    Réponses: 2
    Dernier message: 13/09/2004, 10h00

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