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 :

Class.forName() sur nom de classe "court" ?


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 114
    Points
    114
    Par défaut Class.forName() sur nom de classe "court" ?
    Bonjour

    j'utilise Class.forName() pour récupérer une classe suivant son nom.
    Mais le soucis est que cette méthode demande le nom complet d'une classe au lieu d'un nom "court".

    Par exemple, "java.lang.String" au lieu de "String".

    Mon problème est que je n'ai accès qu'aux noms courts.


    Ma question : savez-vous comment avoir la même chose que Class.forName()
    depuis un nom "court" ?

    Une idée pourrais être :
    1/ trouver le nom long : mais comment être sûr du bon !
    2/ appeler Class.forName() ensuite

    Une autre idée ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Yannick_from_31 Voir le message
    1/ trouver le nom long : mais comment être sûr du bon !
    Tu l'as dit : tout le problème est là !


    Que veux-tu faire avec ca ? Et pourquoi n'as-tu pas accès au nom long ??


    a++

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 114
    Points
    114
    Par défaut
    Je n'ai pas accès aux noms longs puisque dans mon application l'utilisateur peut rentrer du code Java sans gérer les imports des types, ni les noms longs des types...

    Et pour mon problème j'ai besoin de faire une pseudo vérification syntaxique pour vérifier la concordance entre le code utilisateur et les services accédés.

    C'est là que j'ai besoin de parser le code utilisateur afin d'extraire les types qui ont très souvent des noms courts... pour vérifier si ils correspondent bien à ceux de l'interface accédée.

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Dans l'absolu (l'utilisateur peut utiliser n'importe quel type), ce que tu veux faire est tout bonnement non faisable (ou très dur à faire): les imports dans le Java standard (ou encore les noms qualifiés des types) ne sont pas là pour rendre le code plus long et/ou rendre la vie du programmeur plus difficile. A moins biensur que tu mettes en place un mécanisme de gestion assisté des imports comme celui offert par eclipse par exemple (il faut alors rechercher dans tous les types disponibles au runtime, en parcourant les jars, etc.)

    Par contre, si l'utilisateur n'a accès qu'à un sous ensemble des types java (des interfaces et classes de ton cru, etc.), ça peut devenir jouable : une simple Map préparé d'avance qui fait correspondre à un nom court d'un type son nom qualifié.

    Bonne chance.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 114
    Points
    114
    Par défaut
    Je sens que ça va être vraiment trop dur à faire...

    En fait, n'importe quelle classe peut être utilisée !

    Par défaut, il y a des imports automatique qui sont fais par l'application, mais l'utilisateur peut en rajouter lui-même des nouveaux s'il le désire.

    Je repousse ce truc là, j'ai pas mal de trucs pour hier à faire

    Si une lumière vous vient, n'hésitez pas.

    Je vous dirais comment je vais faire si jamais je le fais.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 26
    Points
    26
    Par défaut
    Si tu veux ajouter de la "programmabilité" à ton programme, oriente-toi plutôt vers les API de script de Java 6 (si tu es en Java 6) qui te permette d'utiliser des language comme Groovy ou autre à l'intérieur d'un autre programme (et d'accéder à toutes les classes du programme "père", bien sûr)... Tu auras accès à un analyzeur syntaxique, interpréteur, etc... Se lancer dans l'analyse de code sans une approche formelle solide me paraît bien risqué...

    Bonne chance

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/03/2014, 11h24
  2. Réponses: 3
    Dernier message: 18/04/2009, 23h55

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