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 :

Instance d'un object variable


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut Instance d'un object variable
    Bonjour la team,

    j'aimerais bien mettre en place une solution, mais je ne sais pas si c'est possible.
    Je vous explique:

    je souhaiterais utiliser un référentiel qui permettrait de changer les valeurs de types à vérifier.
    Prenons l'exemple d'un objet s'appelant monObjetTest et que je décide de dire qu'il est de type "String" (que je pourrais changer en "Integer").

    Pour cela, je souhaiterais faire quelque chose en Java du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ("maChaineExemple" instanceOf monObjetTest ) {
      ...
    }
    Je pense que ça doit se faire. Qu'en pensez-vous ?

    Merci,
    Berni.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu ne peux pas changer le type d'un objet, tu peux juste créer un nouvel objet, d'un autre type et le stocker dans la même variable. Mais ça reste un autre Objet.
    intanceOF compare un objet avec une classe, pas un objet avec un objet. Si tu veux savoir si monObjetTest est de type String, le code est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (monObjetTest instanceof String)
    Si tu veux faire ça de manière dynamique (tu ne sais pas encore si tu dois compare à String ou à Integer, par exemple, le code est un peu plus verbeux:


    Class<?> laClassATester = .... ; // String.class par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (laClassATester.isInstance(monObjetTest))

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse tchize_

    Dans ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class<?> laClassATester = .... ; // String.class par exemple
    Est ce possible que la classe soit dynamique, ou bien là aussi doit-on faire autant de cas qu'il y a de types (String, Integer...) ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    La classe peut être dynamique, ça sert à ça.

    exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String nomDeClasse = getLeNomDeClasseVouluDansUnFichierParExemple();
     
    Class<?> laClasse = Class.forName(nomDeClasse);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object unObjetDontOnVeutLaClasse = obtenirLObjetDeQuelquePart();
     
    Class<?> laClasse = unObjetDontOnVeutLaClasse.getClass();
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Sachant que là, tu n'as qu'une définition de classe, il faut encore créer une instance de l'objet.
    Si tes classes ont un constructeur sans argument, ce sera simplement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object monObjet = maClass.newInstance();
    Sinon, il faudra que tu joues avec l'introspection pour rechercher les constructeurs et passer les arguments à la méthode... un peu plus compliqué
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Merci les gars ! Réponse acceptée

    A+,
    berni.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2006, 09h31
  2. [VBA-E] Erreur "Object variable or With block variable not set"
    Par @lex(is) dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/06/2006, 12h39
  3. Réponses: 1
    Dernier message: 20/04/2006, 12h09
  4. Réponses: 7
    Dernier message: 04/04/2006, 14h35
  5. Réponses: 2
    Dernier message: 09/10/2005, 15h35

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