62 votes

Quelle est la signification de $ dans un nom de variable ?

J'ai lu récemment que le signe $ est autorisé dans les noms de variables Java, mais qu'il a une signification particulière. Malheureusement, il n'est pas mentionné quelle est cette signification spéciale.

C'est pourquoi je demande ici : Quelle est la signification spéciale de $ dans les noms de variables en Java ?

Voici la citation exacte de

Java : Une introduction à la résolution de problèmes et à la programmation

de Walter Savitch :

Java autorise l'utilisation du symbole du dollar $ dans un identifiant, mais ces identificateurs ont une signification particulière, vous ne devez donc pas utiliser le symbole $ dans vos identificateurs.

61voto

NPE Points 169956

$ est utilisé en interne par le compilateur pour décorer certains noms. Wikipedia donne l'exemple suivant :

public class foo {
    class bar {
        public int x;
    }

    public void zark () {
        Object f = new Object () {
            public String toString() {
                return "hello";
            }
        };
    }
}

La compilation de ce programme produira trois fichiers .class :

  • foo.class contenant la classe principale (externe) foo
  • foo$bar.class , contenant la classe interne nommée foo.bar
  • foo$1.class contenant la classe interne anonyme (locale à la méthode foo.zark )

Tous ces noms de classe sont valides (comme $ sont autorisés dans la spécification de la JVM).

Dans le même ordre d'idées, javac utilise $ dans des fichiers générés automatiquement noms des variables : par exemple, this$0 et al sont utilisés pour l'analyse implicite this les références des classes internes à leurs classes externes.

Enfin, le JLS recommande ce qui suit :

El $ ne doit être utilisé que dans le code source généré mécaniquement ou ou, rarement, pour accéder à des noms préexistants sur des systèmes existants.

38voto

pablosaraiva Points 1128

Il n'y a pas de signification particulière pour un $ dans le nom d'une variable.

Bien que techniquement autorisé, le fait de commencer le nom de la variable par un signe dollar va à l'encontre de la convention, généralement utilisée uniquement par les générateurs de code.

Pour citer le Tutoriel Java par Oracle :

Les noms de variables sont sensibles à la casse. Le nom d'une variable peut être n'importe quel identifiant légal - une séquence de longueur illimitée de lettres et de chiffres Unicode, commençant par une lettre, le signe dollar "$" ou le caractère de soulignement "_". La convention, cependant, est de toujours commencer vos noms de variables par une lettre, et non par "$" ou "_". En outre, par convention, le signe dollar n'est jamais utilisé. Dans certaines situations, les noms générés automatiquement peuvent contenir le signe du dollar, mais vos noms de variables doivent toujours éviter de l'utiliser. Une convention similaire existe pour le caractère de soulignement ; bien qu'il soit techniquement légal de commencer le nom de votre variable par "_", cette pratique est déconseillée. Les espaces blancs ne sont pas autorisés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X