/** y /* en Java Comentarios


¿Cuál es la diferencia entre

/**
 * comment
 *
 *
 */

Y

/*
 * 
 * comment
 *
 */

En Java? ¿Cuándo debo usarlos?

Author: Zach Saucier, 2015-04-23

9 answers

La primera forma se llama Javadoc. Esto se usa cuando se escriben API formales para el código, que son generadas por la herramienta javadoc. Por ejemplo, la página API de Java 7 utiliza Javadoc y fue generada por esa herramienta.

Algunos elementos comunes que verías en Javadoc incluyen:

  • @param: esto se usa para indicar qué parámetros se pasan a un método y qué valor se espera que tengan

  • @return: esto se utiliza para indicar qué resultado el método va a devolver

  • @throws: esto se usa para indicar que un método arroja una excepción o error en caso de cierta entrada

  • @since: esto se usa para indicar la primera versión de Java en la que esta clase o función estaba disponible

Como ejemplo, aquí está Javadoc para el método compare de Integer:

/**
 * Compares two {@code int} values numerically.
 * The value returned is identical to what would be returned by:
 * <pre>
 *    Integer.valueOf(x).compareTo(Integer.valueOf(y))
 * </pre>
 *
 * @param  x the first {@code int} to compare
 * @param  y the second {@code int} to compare
 * @return the value {@code 0} if {@code x == y};
 *         a value less than {@code 0} if {@code x < y}; and
 *         a value greater than {@code 0} if {@code x > y}
 * @since 1.7
 */
public static int compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

La segunda forma es un comentario de bloque (multilínea). Usa esto si quieres tener múltiples líneas en un comentario.

Diré que solo querrás usar la última forma con moderación; es decir, no querrás sobrecargar tu código con comentarios de bloque que no describan qué comportamientos se supone que tiene el método/función compleja.

Dado que Javadoc es el más descriptivo de los dos, y puede generar documentación real como resultado de su uso, usar Javadoc sería más preferible que un simple bloque de comentarios.

 207
Author: Makoto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 06:45:46

Para el lenguaje de programación Java , no hay ninguna diferencia entre los dos. Java tiene dos tipos de comentarios: comentarios tradicionales (/* ... */) y comentarios de final de línea (// ...). Consulte la Especificación del Lenguaje Java . Entonces, para el lenguaje de programación Java, tanto /* ... */ como /** ... */ son instancias de comentarios tradicionales, y ambos son tratados exactamente igual por el compilador Java, es decir, son ignorados (o más correctamente: son tratados como blancos espacio).

Sin embargo, como programador Java, no solo utiliza un compilador Java. Se utiliza una cadena de herramientas completa, que incluye, por ejemplo, el compilador, un IDE,un sistema de compilación, etc. Y algunas de estas herramientas interpretan las cosas de manera diferente al compilador Java. En particular, /** ... */los comentarios son interpretados por la herramienta Javadoc, que está incluida en la plataforma Java y genera documentación. La herramienta Javadoc escaneará el archivo fuente de Java e interpretará las partes entre /** ... */ como documentación.

Esto es similar a etiquetas como FIXME y TODO: si incluyes un comentario como // TODO: fix this o // FIXME: do that, la mayoría de los IDE resaltarán dichos comentarios para que no te olvides de ellos. Pero para Java, son solo comentarios.

 127
Author: Hoopje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 07:38:12

El primero son los comentarios de Javadoc. Pueden ser procesados por la herramienta javadoc para generar la documentación de la API para sus clases. El segundo es un comentario de bloque normal.

 19
Author: manouti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 06:44:20

Leyendo la sección 3.7 de JLS explicaremos todo lo que necesitamos saber sobre los comentarios en Java.

Hay dos tipos de comentarios:

  • /* texto */

Un comentario tradicional: todo el texto de los caracteres ASCII /* a los caracteres ASCII */ es ignorado (como en C y C++).

  • / / texto

Un comentario de fin de línea: todo el texto desde los caracteres ASCII // hasta el final de la línea es ignorado (como en C++).


Acerca de su pregunta,

El primero

/**
 *
 */

Se usa para declarar La tecnología Javadoc.

Javadoc es una herramienta que analiza las declaraciones y la documentación comentarios en un conjunto de archivos fuente y produce un conjunto de páginas HTML describir las clases, interfaces, constructores, métodos y campos. Puede usar un doclet de Javadoc para personalizar la salida de Javadoc. Un doclet es un programa escrito con el Doclet API que especifica el contenido y formato de la salida a generar por la herramienta. Puedes escribir un doclet para generar cualquier tipo de salida de archivo de texto, como HTML, SGML, XML, RTF y MIF. Oracle proporciona un doclet estándar para generar Documentación de la API en formato HTML. Doclets también se pueden utilizar para realizar tareas especiales no relacionadas con la producción de documentación de API.

Para más información sobre Doclet consulte la API .

El segundo, como se explica claramente en JLS, ignorará todo el texto entre /* y */ por lo tanto se utiliza para crear comentarios multilínea.


Algunas otras cosas que podrías querer saber sobre los comentarios en Java

  • Los comentarios no anidan.
  • /* and */ no tienen un significado especial en los comentarios que comienzan con //.
  • // no tiene un significado especial en los comentarios que comienzan con /* or /**.
  • La gramática léxica implica que los comentarios no ocurren dentro de los literales de caracteres (§3.10.4) o literales de cadena (§3.10.5).

Por lo tanto, el siguiente texto es un único comentario completo:

/* this comment /* // /** ends here: */
 13
Author: Jean-François Savard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 12:54:42

No creo que las respuestas existentes aborden adecuadamente esta parte de la pregunta:

¿Cuándo debo usarlos?

Si está escribiendo una API que se publicará o reutilizará dentro de su organización, debe escribir comentarios Javadoc completos para cada clase, método y campo public, así como métodos y campos protected de clases no-final. Javadoc debe cubrir todo lo que no puede ser transmitido por la firma del método, como las precondiciones, postcondiciones, argumentos válidos, excepciones en tiempo de ejecución, llamadas internas, etc.

Si estás escribiendo una API interna (una que es utilizada por diferentes partes del mismo programa), Javadoc es posiblemente menos importante. Pero para el beneficio de los programadores de mantenimiento, aún debe escribir Javadoc para cualquier método o campo donde el uso correcto o el significado no sea inmediatamente obvio.

La "característica asesina" de Javadoc es que está estrechamente integrado con Eclipse y otros IDE. Desarrollador solo necesita pasar el puntero del ratón sobre un identificador para aprender todo lo que necesitan saber al respecto. Referirse constantemente a la documentación se convierte en una segunda naturaleza para los desarrolladores experimentados de Java, lo que mejora la calidad de su propio código. Si tu API no está documentada con Javadoc, los desarrolladores experimentados no querrán usarla.

 5
Author: Kevin Krumwiede,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-19 22:38:59

El primero es para Javadoc que define en la parte superior de clases, interfaces, métodos, etc. Puede usar Javadoc como el nombre suggest para documentar su código sobre lo que hace la clase o qué método hace, etc. y generar un informe sobre él.

El segundo es el comentario de bloque de código. Digamos, por ejemplo, que tiene algún bloque de código que no desea que el compilador interprete, luego usa el comentario de bloque de código.

Otro es // esto se usa en el nivel de instrucción para especificar cuáles son las líneas de códigos se supone que hacer.

Hay algunos otros también como / / TODO, esto marcará que quieres hacer algo más adelante en ese lugar

//FIXME se puede utilizar cuando se tiene alguna solución temporal, pero se quiere visitar más tarde y hacerlo mejor.

Espero que esto ayude

 3
Author: sunny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 07:07:02

Los comentarios en la siguiente lista de Código Java son los caracteres grises:

/** 
 * The HelloWorldApp class implements an application that
 * simply displays "Hello World!" to the standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}

El lenguaje Java soporta tres tipos de comentarios:

/* text */

El compilador ignora todo desde /* hasta */.

/** documentation */

Esto indica un comentario de documentación (doc comment, para abreviar). El compilador ignora este tipo de comentario, al igual que ignora los comentarios que usan /* y */. La herramienta JDK javadoc utiliza comentarios doc al preparar generados automáticamente documentación.

// text

El compilador ignora todo desde // hasta el final de la línea.

Ahora con respecto a cuándo deberías usarlos:

Utilice // text cuando desee comentar una sola línea de código.

Utilice /* text */ cuando desee comentar varias líneas de código.

Use /** documentation */ cuando desee agregar información sobre el programa que se puede usar para la generación automática de documentación del programa.

 3
Author: Raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 14:54:26
  • Comentario único por ejemplo: / / comentario
  • Comentario de varias líneas por ejemplo: / * comentario * /
  • javadoc comentario por ejemplo: / * * comentario * /
 -1
Author: Ramlal S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 07:38:01

Java soporta dos tipos de comentarios:

  • /* multiline comment */ : El compilador ignora todo, desde /* a */. El comentario puede abarcar varias líneas.

  • // single line : El compilador ignora todo desde // hasta el final de la línea.

Algunas herramientas como javadoc usan un comentario multilínea especial para su propósito. Por ejemplo, /** doc comment */ es un comentario de documentación utilizado por javadoc al preparar la documentación generada automáticamente, pero para Java es un simple comentario multilínea.

 -2
Author: Ranjeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-05 14:48:49