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 :

[Generics] Accéder au type du type paramétré


Sujet :

Langage Java

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 291
    Points : 1 059
    Points
    1 059
    Par défaut [Generics] Accéder au type du type paramétré
    Bonjour,
    Voilà, j'ai un petit problème : j'utilise l'API openoffice en java, avec cette API, il n'est pas possible de caster des variables, il faut passer par une classe OOo qui vérifie les compatibilités et effectue la conversion (pour des raisons d'accès à distance ou autre).
    Le point important est qu'un objet sous OOo peut implémenter diverses interfaces et qu'il faut faire un appel aux mécanisme OOo pour obtenir chacume d'entre elle. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    maMéthode(XComponent c) {
         // Je veux le doc comme un XStorable :
         XStorable s = (XStorable)UnoRuntime.queryInterface(XStorable.class, c);
         // Comme un XTextGraphicObjectsSupplier
        XTextGraphicObjectsSupplier tgos = (XTextGraphicObjectsSupplier)UnoRuntime.queryInterface(XTextGraphicObjectsSupplier.class, component);
        // Etc.
    Etant un peu fénéant par nature, je me suis dit qu'il serait sympa d'encapsuler ça dans une méthode générique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static<T> T convert(Object o) {
         return ((T)UnoRuntime.queryInterface(Je mets quoi là, o));
    }
    Voilà, je cherche ce que devient le premier argument de queryInterface, sachant que T.class est interdit apparemment

  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 Beuss
    Voilà, je cherche ce que devient le premier argument de queryInterface, sachant que T.class est interdit apparemment
    Tu ne peux pas utiliser T.class car le type générics est perdu à l'exécution (donc dans ton cas T == Object). Ce que tu veux faire (ne pas préciser le type de l'objet) n'est donc pas possible dans ton cas.

    Tu es obligé de passer le vrai Type.class en paramètre de la méthode, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static <T> T convert(Class<T> type, Object o) {
        return ((T)UnoRuntime.queryInterface(type, o));
    }
    Que tu appeleras ensuite comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XStorable s = convert(XStorable.class, c);
     
    XTextGraphicObjectsSupplier tgos = convert(XTextGraphicObjectsSupplier.class, component);
    a++

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 291
    Points : 1 059
    Points
    1 059
    Par défaut
    Mouais, c'est triste, j'économise moins de frape pour mes petits doigts
    Merci

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

Discussions similaires

  1. reinterpret_cast<type>, static_cast<type> ou (type)?
    Par méphistopheles dans le forum Débuter
    Réponses: 6
    Dernier message: 24/03/2009, 11h12
  2. [java 5]utiliser un type enum en paramètres
    Par MicroPuce dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2007, 11h52
  3. Fichiers de type xml pour paramètres.
    Par Pierre8r dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 10/11/2006, 17h13
  4. Passage d'un type procédure en paramètre par défaut
    Par Floverdoz dans le forum Langage
    Réponses: 1
    Dernier message: 22/07/2005, 17h48
  5. Type String* en paramètre...
    Par Invité dans le forum MFC
    Réponses: 4
    Dernier message: 24/02/2004, 19h48

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