Ich schreibe ein Doclet, das com.sun.javadoc.Doclet erweitert.
Wenn ich eine ArrayList als ein Feld einer Methode dokumentieren möchte, möchte ich den Typ des generischen Typs ermitteln (zB wenn ich eine ArrayList<String>
dokumentiere, möchte ich die Information erhalten, dass es sich um eine Liste mit Strings handelt) / p>
Ich kann nur die Information bekommen, dass dies eine ArrayList ist. Auch beim Aufruf von
%Vor%Ich erhalte nur java.util.ArrayList und nicht den Typ des generischen.
Weiß jemand, wie man den generischen Typ der Liste bekommt?
Hier ist der Beispielcode:
%Vor% Könnte es sein, dass die Ausgabe java.util.ArrayList<String>
ist und Sie den <String>
-Teil nicht sehen, da Ihr Browser ihn als unbekanntes HTML-Tag interpretiert?
Sie müssen der <
für HTML-Ausgabe entgehen.
Wenn das nicht das Problem ist, zeigen Sie genügend Code, damit wir das Problem reproduzieren können.
Nachdem ich Ihr Beispiel gesehen habe, konnte ich es mit diesem Doclet reproduzieren:
%Vor%Die Ausgabe, wenn sie auf sich selbst angewendet wird:
%Vor%Es zeigt, dass auch Rückgabetypen hier scheinbar parameterlos sind.
Ich wollte sagen, dass ich diese Methode bereits für rekursiv einen Typnamen drucken, aber es zeigt, dass mein LaTeX-Doclet tatsächlich nicht die rekursive Methode verwendet, die ich erstellt habe (stattdessen sind die Typen gedruckt aus dem Compiler-Baum des Typs ).
Aber irgendwie muss das möglich sein, denn irgendwie ist das Standard-Doclet erstellt die richtige Ausgabe .
Nachdem Sie den Java 1.5-Modus mit der Trex-Antwort aktiviert haben, können Sie mit
auf die generischen Typen vonfieldType
zugreifen
%Vor%
Unter der Annahme, dass die ArrayList ein Member-Feld Ihrer Klasse ist, sieht es folgendermaßen aus: answer liefert, was Sie brauchen.
Ein Ausschnitt des Codes aus dieser Antwort zeigt die allgemeine Idee (aber werfen Sie einen Blick auf diese Frage / Antwort):
%Vor%