2011-09-20 17 views
46

Recientemente he leído que el signo $ está permitido en nombres de variables Java, pero tiene un significado especial. Desafortunadamente no se menciona cuál es este significado especial.

Por lo tanto, pregunto aquí: ¿Cuál es el significado especial de $ en nombres de variables en Java?

Aquí es la cita exacta de

Java: Una introducción a la resolución de problemas y programación

de Walter Savitch:

Java no permitir que el dólar símbolo $ a aparecen en un identificador, pero estos identificadores tienen un significado especial, por lo que no debe usar el símbolo $ en su identificador rs.

+0

hilo relacionadas:.. http://stackoverflow.com/questions/6167326/java-class-name-containing-dollar-sign – adatapost

+0

Citando donde se lee esto podría ser bueno que –

+0

editado la pregunta –

Respuesta

43

$ es utilizado internamente por el compilador para decorar ciertos nombres. Wikipedia gives the following example:

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

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

Compilar este programa producirá tres archivos .class:

  • foo.class, que contiene la clase principal (exterior) foo
  • foo$bar.class, que contiene el nombre de la clase interna foo.bar
  • foo$1.class, que contiene la clase interna anónima (local a metho d foo.zark)

Todos estos nombres de clase son válidos (como se permite $ símbolos en la especificación JVM).

[fin de cita]

En una línea similar, javac utiliza $ en algunos generadas automáticamente nombres de variables: por ejemplo, this$0 et al se utilizan para las implícitas this referencias de las clases internas a su clases externas

Por último, the JLS recommends the following:

El carácter $ debe usarse sólo en forma mecánica generada código fuente o, raramente, para acceder a los nombres preexistentes en los sistemas heredados.

+0

Eso no es verdad. Puedo nombrar mi clase Prueba $ – RoflcoptrException

+3

La pregunta no es preguntar por nombres de clase, pero para var Ibles. –

31

Hay no special meaning for it:

"Los nombres de variables distinguen entre mayúsculas y minúsculas El nombre de una variable puede ser cualquier identificador legal - una secuencia de longitud ilimitada de letras y dígitos Unicode, comenzando con una letra, el. signo de dólar "$", o el carácter de subrayado "_". La convención, sin embargo, es comenzar siempre sus nombres de variable con una letra, no "$" o "_".Además, el carácter de signo de dólar, por convención, nunca se usa en absoluto. Puede encontrar algunas situaciones en las que los nombres generados automáticamente contendrán el signo de dólar, pero los nombres de las variables siempre deben evitar su uso. Existe una convención similar para el carácter de guión bajo; si bien es técnicamente legal comenzar el nombre de su variable con "_", se desaconseja esta práctica. No se permite el espacio en blanco "

Cuestiones relacionadas