Doclet- Erhalte Generika einer Liste

7

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%     
rch 20.04.2011, 14:05
quelle

4 Antworten

22

Ich war dabei, dass Generika beim Schreiben eines benutzerdefinierten Doclet unter Java 1.6 auf Typen verloren gingen. Ich konnte es beheben, indem ich meinem Doclet die folgende Methode hinzufügte.

%Vor%     
Trex 28.04.2011 16:49
quelle
1

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 .

    
Paŭlo Ebermann 20.04.2011 22:37
quelle
1

Nachdem Sie den Java 1.5-Modus mit der Trex-Antwort aktiviert haben, können Sie mit

auf die generischen Typen von fieldType zugreifen %Vor%     
Ben Hutchison 11.09.2013 07:29
quelle
-2

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%     
RHSeeger 20.04.2011 14:18
quelle

Tags und Links