Comment obtenir un JavaDoc d'une méthode au moment de l'exécution?
, il est facile d'obtenir a method Name
de Class
au moment de l'exécution
Mais
Comment je peux obtenir un JavaDoc
d'une méthode au moment de l'exécution ?
Comme l'exemple suivant
Notre classe qui inclut JavaDoc
de notre méthode cible
public class MyClass {
/**
*
* @param x value of ....
* @return result of ....
*/
public String myMethod(int x) {
return "any value";
}
}
Notre classe qui a une méthode principale
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
}
}
5 réponses
Vous ne pouvez pas : le fichier class
ne contient pas les commentaires.
Une" solution " serait de générer le javadoc en HTML lorsque vous construisez votre programme et de construire une URL à partir du nom de la classe et du nom de la méthode. Vous pouvez également générer le javadoc dans un format plus approprié que HTML en utilisant l'API doclet .
La seule façon de l'obtenir à l'exécution est d'utiliser des annotations.
Créer une classe d'annotation personnalisée:
@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();
}
Utiliser sur une méthode d'une classe, par exemple:
@ServiceDef(desc = "This is an utility class",
params = {"name - the name","format - the format"})
public void read(String name, String format)
Inspectez les annotations par réflexion:
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();
}
}
}
Les processeurs D'Annotation ont accès aux commentaires Javadoc dans le code source. Si vous avez le contrôle sur le processus de compilation pour les classes dont Javadoc vous intéresse, vous pouvez utiliser un processeur d'annotation pour récupérer le Javadoc au moment de la compilation et le rendre disponible plus tard lors de l'exécution.
C'est L'approche utilisée dans le projettherapi-runtime-javadoc (disclosure: que j'ai écrit et que je branche sans vergogne).
Vous pouvez Exécuter javadoc par programmation et passer des options pour générer de la documentation pour la classe que vous voulez, puis analyser le document généré pour obtenir la documentation de la méthode que vous voulez. Vous aurez besoin du code source à l'exécution car les commentaires ne sont pas dans le fichier de classe.
Les commentaires n'ont pas de représentation en bytecode, ils sont supprimés par le compilateur et ne sont pas disponibles "à l'exécution".