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 :

[JDK 5.0] Les méthodes isSynthetic() et isBridge() ???


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Points : 30
    Points
    30
    Par défaut [JDK 5.0] Les méthodes isSynthetic() et isBridge() ???
    Salut à tous,

    Je suis en train d'étudier les nouvelles méthodes du JDK 5.0 pour l'API Réflexion.
    Il y a certaines méthodes sur lesquelles je reste sans définition. Par exemple dans les classes Class, Constructors, Method et Field, on retrouve quasiment tout le temps les méthodes isSynthetic(), et isBridge().

    La JavaDoc n'indique rien de très explicite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    isSynthetic
     
    public boolean isSynthetic()
        Returns:  true if and only if this class is a synthetic class as defined by the Java Language Specification.
        Since:   1.5
    et le Java Language Specification n'en parle même pas (à part cité une fois mais pas expliqué...)
    Et c'est pareil pour isBridge()

    Donc est-ce-que quelqu'un s'y connaitrait plus que mois sur les méthodes Bridge et Synthetic svp ??? Je désespère...

    Merci d'avance...

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    La JLS en parle bel et bien. Un membre synthetic est un membre ou une methode ajoute par le compilateur, qui n'apparait pas dans le code source. C'est utilise par le compilateur pour permettre de lier les classes internes a leur parent, bien que les classes soient distinctes sur le disque. J'ai trouve un blog qui donne plus de details : http://vladium.blog-city.com/actualaccessflags_an_undocumented_class_format_attribute.htm

    Tu trouveras une description des bridges a la section 15.12.4.5 de la JLS. En gros une methode bridge est generee quand tu etends une classe generifiee en specifiant le type. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MaClasse<T> {
      abstract T get(T source);
    }
     
    class MaClasseString extends MaClasse<String> {
      String get(String source) {
        return source.substring(0, 10);
      }
    Comme l'utilise des generics implique l'erasure des types, le compilateur genere une methode bridge pour verifier le type du parametre passe a la methode lors de l'invocation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object get(Object source) {
      return get((String) source);
    }
    C'est ce qui permet d'avoir des ClassCastException en utilisant des classes generifiees.
    Romain Guy
    Android - Mon livre - Mon blog

Discussions similaires

  1. Ou trouver des exemples d'utilisation de toutes les méthodes du JDK
    Par vandeyy dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 04/03/2014, 15h46
  2. Réponses: 8
    Dernier message: 10/12/2009, 16h55
  3. Modifier les méthodes de JDK et la licence de Java
    Par hassanJava dans le forum Général Java
    Réponses: 5
    Dernier message: 14/09/2009, 18h39
  4. [Interface] Appeller toutes les méthodes héritées d'un class
    Par thibaut.d dans le forum Général Java
    Réponses: 4
    Dernier message: 25/01/2005, 08h42
  5. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48

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