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

Java Discussion :

Changer le type de la classe /erreur de compilation


Sujet :

Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Changer le type de la classe /erreur de compilation
    Bonjour,
    j'essai d'exécuter un bout de code car j'en ai besoin,
    je veux que le nom de l'objet change mais il y a une erreur de compilation
    car le compilateur ne regarde pas le contenu de la variable objet, voici l'exemple :

    tab[3]="arbre,fruit,legumes";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String objet;
    for (int i=0;i<10;i++)
    {
    objet=class+tab[i];
    //je ne peux pas faire objet.quelquechose car erreur de compilation
    
    
    }

    Est ce qu'on peut faire ça en java ?

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Il s'agit de quelle erreur de compilation? Chez moi ce code ne pose aucun problème (sans le "class +" je veux dire).
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour et merci de votre réponse rapide.
    en fait l'erreur de compilation est dans : objet.méthode car
    le compilateur ne lit pas le contenu de objet mais il le prend comme chaine de caractère , tu vois ce que je veux dire ?

  4. #4
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Vous déclarez un "String objet", alors moi je dirais qu'il est et va toujours rester une chaîne de caractères...
    Si cette chaîne de caractères représente en fait le nom d'un objet, il faudra vous arranger autrement pour obtenir le contenu du tableau car pas moyen de mettre dans une variable String autre chose que des caractères.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Oui, tu as absolument raison
    d'après toi, ya pas moyen d'avoir le contenu de cette variable (objet) ? aucune solution ??

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Je suppose qu'il s'agit de trois classes (ça m'étonnerait un nom de classe contenant des espaces et des virgules).

    Si c'est le cas: il faudrait extraire du String objet les sous-chaînes séparées par des virgules. Une des possibilités c'est List<String> items = Arrays.asList(objet.split("\\s*,\\s*")). Ca donnera une liste de String contenant "arbre", "fruit" et "legumes".
    Puis je dirais qu'il faut faire des tests, quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(String nomClasse : items){
         if (nomClasse.equals("arbre"){
               Class<?> class = Class.forName("arbre");
               // etc.
         }
         // etc.
    }
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci Mishulyna pour cette solution, je vais l'essayer et je vous mets au courant

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour Mishulyna,
    comment je fais si je veux accéder au méthodes de "class" par exemple class.methode ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class<?> class = Class.forName("arbre");

  9. #9
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour xamarin,

    Comme je n'ai jamais fait un truc pareil ( pour l'opportunité!), j'ai dû tester.

    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
    import entity.*;
    
    
    public void printClass() throws InstantiationException, IllegalAccessException{
            try {
                // "class" étant un mot réservé il faut changer le nom de la variable
                Class<?> classe = Class.forName("entity.Arbre"); // le nom du package où se trouve la classe est indispensable, ainsi que l'import de ce package et 
                                                                   // une petite concaténation "nomPackage." + "arbre" pour construire la chaîne à passer à Class.forName(), 
                                                                   // éventuellement mettre la première lettre en majuscule si ce n'est pas le cas dans le tableau
                Arbre arbre = (Arbre) classe.newInstance();
                arbre.setNomArbre("hêtre");
                System.out.println(arbre.toString());// ou autre méthode qui retourne le "nom" de l'arbre, comme getNomArbre();
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
                Logger.getLogger(Bean.class.getName()).log(Level.SEVERE, null, ex);
            }       
        }
    Il est bien sûr possible de mieux organiser le code avec des try / catch spécifiques pour intercepter les erreurs.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    merci Mishulyna pour le code clair et fonctionnel,
    mais le problème est que je ne sais par le type "Arbre" à l'avance ,
    de plus le contenu de tab peut etre changé par l'utilisateur, alors je dois faire
    un programme qui fonctionne quelque soit le contenu du tableau
    de plus le type de la classe va etre integré dans un serviceTracker du cout
    j'ai fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    tab[3]="arbre,fruit,legumes";
     
    for (int i=0;i<10;i++)
    {
     
               Class<?> class = Class.forName(tab[i]);
               Object newInstance = clazz.newInstance();
     ServiceTracker<?, ?> myService = new ServiceTracker<?, ?>(
    				context, ?.class, null);
     
     
    }

    alors au lieu du "?" j'ai mis newInstance comme vous m'avez proposé, mais
    erreur de compilation.

  11. #11
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Oulà, ça a commencé par "un bout de code" et maintenant part dans des ServiceTracker! J'ai très mal compris vos besoins, désolée...
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    ça se complique de mon côté aussi mais j'essai de diviser mon problème en petits problèmes tu vois
    Merci de ton aide quand même

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/04/2013, 13h52
  2. erreur de compilation : probleme avec type de structure dans une classe
    Par medkarim dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/10/2008, 15h33
  3. Réponses: 6
    Dernier message: 04/01/2007, 16h34
  4. [Débutant] Changer le type d'une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/11/2005, 11h26
  5. [Debutant][Collection] Création d'un vecteur de type d'une classe
    Par Tao® dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 22/04/2004, 17h06

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