2013-07-05 6 views
141

Derzeit ist ich Referenzierung Methoden in anderen Klassen mit dieser Javadoc Syntax:Javadoc Link zu Verfahren in anderer Klasse

@see {@link com.my.package.Class#method()} 

Und in dem, was ich aus der Dokumentation verstehe dies der richtige Weg ist, dies zu tun. Aber jetzt zum lustigen Teil oder frustrierend. Wenn ich diese javadoc erzeugen bekomme ich vor allem Fehler folgende:

warning - Tag @see:illegal character: "123" in "{@link com.my.package.Class#method()}" 
warning - Tag @see:illegal character: "64" in "{@link com.my.package.Class#method()}" 
warning - Tag @see: reference not found: {@link com.my.package.Class#method()} 

Der erzeugte HTML-Code dafür ist:

"," <code>com.my.package.Class#method()}</code> "," 

Und natürlich habe ich keine Verbindung. Kann mir jemand sagen, was passiert, und irgendwelche Hinweise, wie das zu beheben ist?

Gemäß der ASCII-Tabelle stehen die Zeichen 123 und 64 für wold für {und @, also warum sind diese Zeichen nicht gültig, wenn diese Syntax gemäß der Dokumentation korrekt ist?

+1

Nur um zu überprüfen ... haben Sie die Javadoc Generator Dokumentation gelesen? http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#link –

+0

Haben Sie 'com.my.package.Class' in der Klasse importiert, in der JavaDoc geschrieben ist? Die _reference not found_ scheint seltsam. Auf der anderen Seite habe ich sie nie kombiniert benutzt, aber es besteht die Möglichkeit, dass '@ see' und' @ link' miteinander in Konflikt geraten, da '@ see' eine eigene Section erzeugt, würde es mich nicht überraschen. – Gamb

+1

@DiogoMoreira - Nein ich habe nicht über den Motor gelesen, aber ich werde es überprüfen. – Robert

Antwort

183

Für das Javadoc-Tag @see müssen Sie @link nicht verwenden; Javadoc erstellt einen Link für Sie. Versuchen

@see com.my.package.Class#method() 

Here's more info about @see.

+0

Danke dafür habe ich gerade diese Lösung getestet und das funktioniert gut! Aber ich habe an so vielen Stellen gelesen, dass Sie den Link in see verwenden sollten, damit das funktioniert, also ist das ein bisschen komisch ... – Robert

+6

Sie können '@ link' an anderen Stellen verwenden, an denen Javadoc noch nicht aktiv ist ein Link, z in der Beschreibung für '@ param', in der Beschreibung für' @ return', im Hauptteil der Beschreibung, etc. – rgettman

+0

wenn ich gerade dies versuchte, zeigt es die Methode als Klartext an, es ist nicht klickbar wie mein @see für eine lokale Methode. – JesseBoyd

95

Abgesehen von @see, eine allgemeinere Art und Weise in einer anderen Klasse von beziehen und möglicherweise Methode dieser Klasse ist {@link somepackage.SomeClass#someMethod(paramTypes)}. Dies hat den Vorteil, dass es in der Mitte einer Javadoc-Beschreibung verwendet werden kann.

Von der javadoc documentation (description of the @link tag):

This tag is very simliar to @see – both require the same references and accept exactly the same syntax for package.class#member and label. The main difference is that {@link} generates an in-line link rather than placing the link in the "See Also" section. Also, the {@link} tag begins and ends with curly braces to separate it from the rest of the in-line text.

26

So ist die Lösung für das ursprüngliche Problem ist, dass Sie nicht brauchen, sowohl die „@see“ und die „{...} @link“ Verweise auf demselben Linie. Das "@link" -Tag ist autark und kann, wie bereits erwähnt, überall im Javadoc-Block eingefügt werden. So können Sie die beiden Ansätze mischen:

+0

Dies sollte als Antwort akzeptiert werden, da andere zwei Antworten nicht zeigen, dass '@link' oder '@see' in einem Kommentar mit mehreren Zeilen/** */nicht einer Zeile – Sniper

+0

@Sniper, '{@link}' funktionieren müssen In einem einzeiligen Javadoc-Kommentar meinen Sie vielleicht, dass sie nicht mit Kommentaren arbeiten, die mit '//' beginnen? '/ ** * /' ist Javadoc und ist für alle Javadoc-Funktionen notwendig. – Jase

+0

Ja @Jase Ich traf genau das der Kommentar muss sein/** * /, aber nicht // – Sniper