Comentarios ejecutables en Java

Un comentario es una declaración que no es ejecutada por el compilador o el intérprete, pero antes de la transformación léxica del programa en el compilador, el contenido del programa se codifica en ASCII para facilitar el procesamiento. Considere este programa:

class Main{
  
    public static void main(String[] args) {
        // The comment below is magic..
        // \u000d System.out.println("Geek Comment Executed!");
    }
}

Este código se ejecutará y compilará correctamente para producir la salida.
Producción

Geek Comment Executed!

Esto produce con éxito esta salida porque el compilador de Java antes de la transformación léxica analiza el carácter Unicode \u000d como una nueva línea y el programa se transforma en:

class Main{
      
    public static void main(String[] args) {
        // The comment below is magic
        //
        System.out.println("Geek Comment Executed!");
    }
}

El carácter Unicode Cambia la declaración de impresión a la siguiente línea, que luego se ejecuta como un programa Java normal. Entonces, surge la pregunta de por qué la traducción de los escapes de Unicode ocurre antes que cualquier otro procesamiento de código fuente.

1. El código fuente de Java se puede escribir en cualquier codificación que permita una amplia gama de caracteres en strings, literales y comentarios.
1. Facilita el procesamiento con herramientas basadas en ASCII.
2. Esto garantiza la dependencia de la plataforma Java, que es la independencia de los conjuntos de caracteres admitidos.
3. Esto ayuda a documentar el código en idiomas no latinos.

Ser capaz de escribir cualquier carácter Unicode en cualquier lugar del archivo es una característica interesante. El hecho de que pueda interferir con la semántica de formas tan sutiles es solo un efecto secundario.

Consideremos este programa java:

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

Producción:

Hello World

Este programa Unicode se convierte en sus valores representativos para producir la referencia «Hello World» :
https://stackoverflow.com/questions/30727515/why-is-executing-java-code-in-comments-with-certain-unicode-characters -permitido?boletín=1&nlcode=222379%7C1266

Publicación traducida automáticamente

Artículo escrito por rishabh jindal 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *