¿Cuál es el significado de $ en un nombre de variable?

Recientemente leí que el signo $ está permitido en los nombres de las variables de 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í está la cita exacta de

Java: una introducción a la resolución de problemas y la progtwigción

de Walter Savitch:

Java permite que el símbolo $ del signo de dólar aparezca en un identificador, pero estos identificadores tienen un significado especial, por lo que no debe usar el símbolo $ en sus identificadores.

$ es utilizado internamente por el comstackdor para decorar ciertos nombres. Wikipedia da el siguiente ejemplo :

 public class foo { class bar { public int x; } public void zark () { Object f = new Object () { public String toString() { return "hello"; } }; } } 

Comstackr este progtwig producirá tres archivos .class:

  • foo.class , que contiene la clase principal (externa) foo
  • foo$bar.class , que contiene la clase interna nombrada foo.bar
  • foo$1.class , que contiene la clase interna anónima (local para el método foo.zark )

Todos estos nombres de clase son válidos (ya que $ símbolos están permitidos en la especificación JVM).

En una línea similar, javac usa $ en algunos nombres de variables generados automáticamente: por ejemplo, this$0 y otros se usan para las referencias implícitas de las clases internas a sus clases externas.

Finalmente, el JLS recomienda lo siguiente :

El carácter $ debe usarse solo en código fuente generado mecánicamente o, raramente, para acceder a nombres preexistentes en sistemas heredados.

No tiene un significado especial para esto :

“Los nombres de las 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” _ “. , sin embargo, siempre debe comenzar sus nombres de variable con una letra, no con “$” 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 contienen 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 subrayado, aunque es técnicamente legal comenzar el nombre de su variable con “_”, se desaconseja esta práctica. El espacio en blanco no está permitido.