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

Langage Java Discussion :

[java.lang.Class & arbre] tester la bonne class


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut [java.lang.Class & arbre] tester la bonne class
    Bonjour,
    J'aimerais tester l'appartenance d'un object à une class mais il ne semble pas avoir de fonction toute faite... Quand je parle d'appartenace je veux dire que cet object peut etre casté par cette class. (Une methode barbare que j'utilisais par defaut est un cast avec un try/catch mais c'est un peu... barbare... )

    Soit l'instance o, o.getClass() ne fournit que la class d'instanciation...
    Pouvez vous me confirmer le fait qu'il n'y a rien de simple?

    Mon probleme se pose dans l'utilsation d'un arbre similaire à JPanel et JComponent de swing. Dans mon cas je possede une class Item et une class inventory extends Item qui est en gros une collection d'Item qui peut donc contenir des Item (et aussi des incentory puisque inventory est un item...).
    J'aimerais faire une methode getItem() qui appellée sur un inventaire fournit l'ensemble des items contenus dans celui-ci, en ouvrant les sub-inventory...

    Pour resumer, j'aimerais la confirmation que je serais obliger de passer par un test de la class d'instanciation puis des super-class succesivement jusqu'a trouver l'egalité ou la classe finale (pouvant etre Object mais dans mon cas Item sera le mieu...)...

    Peut etre qu'un "nouveau" for marcherait mais vu que je sais pas comment ils fonctionnent...

  2. #2
    Membre averti
    Inscrit en
    Février 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 23
    Par défaut
    J'aimerais tester l'appartenance d'un object à une class mais il ne semble pas avoir de fonction toute faite... Quand je parle d'appartenace je veux dire que cet object peut etre casté par cette class. (Une methode barbare que j'utilisais par defaut est un cast avec un try/catch mais c'est un peu... barbare... )
    JE vois pas ou est ton probleme la, il te suffit de caster les elements de ta liste en Item quand tu les recuperes, tu sais forcement que tous les objets de ta collection seront de type Item. Et effectivement tu peux connaitre leur type reel avec la methode "getClass()" ou par le mot clé "instanceof".

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    instanceof me parrait tout indiqué, en effet imaginons une classe C qui derive d'une classe B qui elle meme derive d'une classe A alors renvoie vrai


    pour le nouveau for c'est très simple (et très pratique) : soit un tableau d'une Classe C le nouveau for est equivalent à un foreach. expl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(C cTemp : tab)
    { 
         ... 
    }
    equivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int i = 0;i < tab.length;i++)
    {
         C cTemp = tab[i];
         ...
    }
    ça marche aussi avec les liste
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    @mimil : inventory est un item mais contient lui meme des items.... Mon but est que la fonction getItem() s'apelle elle-meme sur les sous-inventaires et pour cela il faut savoir les items qui sont des inventaires....

    Cela est en effet ce que je recherchais...

    Et pour le nouveau for, cela confirme mes craintes... Il cast par default tous les elements et donc on peut avoir une exception si un element n'est pas du type demandé... Ainsi utilisé un tel for avec ma class Inventory n'est pas une solution...

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 01/03/2011, 12h08
  2. Réponses: 9
    Dernier message: 10/12/2010, 13h55
  3. Probleme avec la recherche directe de methodes sur une Class (API java.lang.reflect)
    Par CyberChouan dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 25/01/2007, 17h12
  4. [java.lang.class] Votre avis sur une portion de code
    Par be_tnt dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2006, 16h55
  5. Réponses: 1
    Dernier message: 14/10/2006, 07h13

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