7
votes

DOCLET- Obtenez des génériques d'une liste

J'écris un doculet extension com.sun.javadoc.doclet.

Lorsque je veux demander de documenter une arrayliste comme champ d'une méthode, je souhaite obtenir le type de générique (par exemple, lors de la documentation d'un ArrayList Je veux obtenir les informations sur lesquelles il s'agit d'une liste contenant des chaînes).

Je ne suis que capable d'obtenir les informations, qu'il s'agit d'une arraylist. Même lorsque vous appelez xxx

je ne reçois que java.util.arraylist et non le type de générique.

fait Quelqu'un sait comment obtenir le type générique de la liste?

Voici l'exemple de code: xxx


1 commentaires

Quel est le champ d'une méthode ? Un paramètre de méthode?


4 Réponses :


-2
votes

En supposant que le tableau est un champ de membre de votre classe, il ressemble à ce qui suit Réponse fournira ce dont vous avez besoin.

Un extrait du code de cette réponse montre l'idée générale (mais jetez un coup d'œil à cette question / réponse): xxx


1 commentaires

Encore une fois, les doclets fonctionnent sur la source et non le code compilé. La réflexion n'est pas la voie à suivre



1
votes

pourrait-il être que la sortie est java.util.arraylist et que vous ne voyez pas le pièce puisque votre navigateur interprète en tant que Tag HTML inconnu?

Vous devrez échapper au << / code> pour la sortie HTML.

Si ce n'est pas le problème, affichez suffisamment de code afin que nous puissions reproduire le problème. < / p>


Après avoir vu votre exemple, je pouvais la reproduire avec ce docuté: xxx

la sortie, si elle est appliquée sur elle-même: < Pré> xxx

Il montre que les types de retour aussi semblent être paramètres ici.

Je voulais dire que j'ai déjà utilisé cette méthode pour Imprimez récursivement un nom de type , mais cela montre que mon latex- Doclet n'utilise même pas la méthode récursive que j'ai créée (les types sont plutôt imprimé de l'arbre du compilateur du type ).

Mais cela doit être possible, depuis quelque manière que ce soit le doculet standard manges pour créer la bonne sortie .


3 commentaires

Je ne pense pas que l'évasion manquante de << / code> est le problème. Actuellement, je débogage de l'outil de documentation à Eclipse. Pour vous donner plus de code: je suis itération à travers un tableau d'éléments de FieldDoc [] et vérifiez s'il s'agit d'un type paramétré (voir post suivant). Est-ce que quelqu'un connaît une solution? Je pense qu'il doit y avoir un moyen de documenter le type générique d'une liste ....


Voici quelques champs de code: FieldDoc [] = Classdoc.fields (); pour (int k = 0; k


J'ai ajouté votre code à la question, il est beaucoup plus facile de lire de cette façon (et moins susceptibles d'être manqués).



24
votes

Je rencontrais des génériques en train de perdre des types lors de la rédaction d'un doculet personnalisé sous Java 1.6. J'ai été capable de le réparer en ajoutant la méthode ci-dessous à mon docut.

   /**
    * NOTE: Without this method present and returning LanguageVersion.JAVA_1_5,
    *       Javadoc will not process generics because it assumes LanguageVersion.JAVA_1_1
    * @return language version (hard coded to LanguageVersion.JAVA_1_5)
    */
   public static LanguageVersion languageVersion() {
      return LanguageVersion.JAVA_1_5;
   }


1 commentaires

Tu as fait ma journée. Il m'a fallu 2 mois pour trouver cette information dans le World Wide Web.



1
votes

Après avoir activé le mode Java 1.5 avec la réponse de Trex, vous pouvez accéder aux types génériques de fieldtype à l'aide de xxx


0 commentaires