ventajas usar que identifique español documentacion averigue all java oop runtime javadoc

usar - javadoc wiki



¿Cómo obtener un JavaDoc de un método en tiempo de ejecución? (5)

Los comentarios no tienen una representación en bytecode, son eliminados por el compilador y no están disponibles "en tiempo de ejecución".

Es fácil obtener a method Name de una Class en tiempo de ejecución
PERO
¿Cómo puedo obtener un JavaDoc de un método en tiempo de ejecución?

Como el siguiente ejemplo

Nuestra clase que incluye JavaDoc de nuestro método objetivo

public class MyClass { /** * * @param x value of .... * @return result of .... */ public String myMethod(int x) { return "any value"; } }

Nuestra clase que tiene un método principal

public class TestJava { public static void main(String[] args) { // get Class method Name at run time String methodName = MyClass.class.getMethods()[0].getName(); System.out.println(methodName); // will print myMethod // How to get a JavaDoc of myMethod `method` at run time // MyClass.class.getMethods()[0].???? // expected to print a JavaDoc of myMethod } }


No puede: el archivo de class no contiene los comentarios.

Una "solución" sería generar javadoc como HTML cuando construyes tu programa y construir una URL a partir del nombre de la clase y el nombre del método. También puede generar el javadoc en un formato más adecuado que HTML utilizando la API del doclet .


Puede ejecutar javadoc programáticamente y pasar opciones para generar documentación para la clase que desee y luego analizar el documento generado para obtener la documentación del método que desee. Necesitará el código fuente en tiempo de ejecución porque los comentarios no están en el archivo de la clase.


La única forma de obtenerlo en tiempo de ejecución es usar anotaciones personalizadas.

Crea una clase de anotación personalizada:

@Retention(RUNTIME) @Target(value = METHOD) public @interface ServiceDef { /** * This provides description when generating docs. */ public String desc() default ""; /** * This provides params when generating docs. */ public String[] params(); }

Úselo en un método de una clase, por ejemplo:

@ServiceDef(desc = "This is an utility class", params = {"name - the name","format - the format"}) public void read(String name, String format)

Inspeccione las anotaciones a través de la reflexión:

for (Method method : Sample.class.getMethods()) { if (Modifier.isPublic(method.getModifiers())) { ServiceDef serviceDef = method.getAnnotation(ServiceDef.class); if (serviceDef != null) { String[] params = serviceDef.params(); String descOfMethod = serviceDef.desc(); } } }


Los procesadores de anotación tienen acceso a los comentarios de Javadoc en el código fuente. Si tiene control sobre el proceso de compilación para las clases cuyo Javadoc está interesado, puede usar un procesador de anotación para tomar el Javadoc en tiempo de compilación y hacerlo disponible más adelante en el tiempo de ejecución.

Este es el enfoque utilizado en el proyecto therapi-runtime-javadoc (divulgación: el cual fue el autor y me estoy conectando descaradamente).