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 :

Que veut dire appel à Object.class


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut Que veut dire appel à Object.class
    je regarde le code de ArgoUML et je suis tombé sur une forme que je ne connaissais pas. J'ai essayé de me documenter sur Google mais quand je tape .class ou autre je trouve rien.

    J'explique ce que je n'ai pas compris:

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
    package org.argouml.uml.diagram.ui;
     
     
    import org.argouml.uml.CommentEdge;
     
    /**
     * An extension of ActionSetMode to set the parameters for a comment link.
     *
     * @author Bob Tarling
     */
     
    public class ActionSetAddCommentLinkMode extends ActionSetMode {
     
        /**
         * Construct a new ActionSetAddCommentLinkMode.<p>
         */
        public ActionSetAddCommentLinkMode() {
            super(
                    ModeCreateCommentEdge.class, //c'est ca que je comprend pas!
                    "edgeClass",
                    CommentEdge.class, //et ca aussi !
                    "button.new-commentlink");
        }
    }

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    public class ActionSetMode extends SetModeAction {
     
        private static final Logger LOG = Logger.getLogger(ActionSetMode.class);
     
       [...]
     
        /**
         * The constructor.
         *
         * @param modeClass the next global editor mode
         * @param arg the name of a new argument for the new mode
         * @param value the value of a new argument for the new mode
         */
        public ActionSetMode(Class modeClass, String arg, Object value) {
            super(modeClass, arg, value);
        }
     
        /**
         * The constructor.
         * TODO: The "name" parameter is used for the icon and for the tooltip.
         * This makes i18n of the tooltip impossible.
         *
         * @param modeClass the next global editor mode
         * @param arg the name of a new argument for the new mode
         * @param value the value of a new argument for the new mode
         * @param name the name of the command that is the tooltip text.
         */
        public ActionSetMode(Class modeClass, String arg, Object value, 
                String name) {
            super(modeClass, arg, value);
            putToolTip(name);
            putIcon(name);
        }
     
        /**
         * The constructor.
         *
         * @param modeClass the next global editor mode
         * @param arg the name of a new argument for the new mode
         * @param value the value of a new argument for the new mode
         * @param name the name of the command that is the tooltip text.
         * @param icon the SMALL_ICON for the action
         */
        public ActionSetMode(
            Class modeClass,
            String arg,
            Object value,
            String name,
            ImageIcon icon) {
            super(modeClass, arg, value, name, icon);
            putToolTip(name);
        }
     
       [....]
     
    }
    C'est un appel static donc ce n'est pas équivalent a .getClass()
    Est ce que cela crée une classe static et la revoie je sais pas!

    merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut en regardant le bytecode


    Je peux voir qu'un objet Class qui appel un champ de Type Class de nom
    class$org$ ... $ModeCreateCommentEdge

    voila la déclaration de ModeCreateCommentEdge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public final class ModeCreateCommentEdge extends ModeCreateGraphEdge {
    test si ce champ est non null!

    si null alors il appel class$ ("org.argouml. ....ModeCreateCommentEdge") et ca lui retourne une Class qu'il stock dans un champ class$org$ ... $ModeCreateCommentEdge

    la suite je la comprend sa m'intéresse pas.

    D'où sort le champ class$org$ ... $ModeCreateCommentEdge ?
    il n'est déclaré nulle part

  3. #3
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    QuelqueChose.class permet, en indiquant le "pseudo-champ" statique .class au nom d'une classe, d'obtenir son objet de type Class.
    (donc effectivement presque comme l'appel de getClass() mais dans un contexte statique)
    l'avantage est double:
    - on peut le faire dans un contexte statique
    - on n'est pas trompé en cas d'héritage

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    bon grillé...
    Ici le code généré par cette consultation de ".class"
    fait appel à des internes de la JVM (champ et méthode static d'obtention de la class).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut merci pour ta réponse
    merci a bientot

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

Discussions similaires

  1. Que veut dire une class loaded?
    Par khaigo dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 09/10/2010, 07h31
  2. Que veut dire le "T" devant un nom de classe?
    Par Jhulk dans le forum Delphi
    Réponses: 5
    Dernier message: 08/06/2006, 08h39
  3. [WD9] Que veut dire AGL?
    Par afrikha dans le forum WinDev
    Réponses: 4
    Dernier message: 24/10/2005, 11h15
  4. Que veut dire ce symbole?
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/06/2005, 22h25
  5. Que veut dire "volatile" devant une variable ?
    Par altahir007 dans le forum C
    Réponses: 4
    Dernier message: 23/06/2004, 15h47

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