2013-07-05 23 views
141

Obecnie jestem odwoływania się metody w innych klasach z tej składni Javadoc:Link Javadoc metody w innej klasy

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

A co rozumiem z dokumentacji to jest poprawny sposób to zrobić. Ale teraz do zabawnej części lub frustrującej. Kiedy wygenerowania tego javadoc I przede wszystkim uzyskać następujący błąd:

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()} 

wygenerowany kod HTML jest:

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

I oczywiście nie mam linku. Czy ktoś może mi powiedzieć, co się dzieje, i wszelkie wskazówki, jak to naprawić?

Zgodnie z tabelą znaków ASCII 123 i 64 dla wold reprezentują {i @, więc dlaczego te znaki nie są poprawne, jeśli składnia jest poprawna zgodnie z dokumentacją?

+1

Wystarczy, że sprawdzisz ... czy przeczytałeś dokumentację generatora Javadoc? http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#link –

+0

Czy zaimportowałeś 'com.my.package.Class' w klasie, w której napisana jest JavaDoc? Brak odnośnika _ wydaje się dziwny. Z drugiej strony, nigdy ich nie użyłem w połączeniu, ale jest szansa, że ​​konflikty '@ see' i' @ link' będą ze sobą konfliktować, biorąc pod uwagę, że '@ see' generuje własną sekcję, co mnie nie zdziwi. – Gamb

+1

@DiogoMoreira - Nie, nie czytałem o silniku, ale sprawdzę to. – Robert

Odpowiedz

183

Dla znacznika Javadoc @see nie trzeba używać @link; Javadoc utworzy dla ciebie link. Spróbuj

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

Here's more info about @see.

+0

Dziękuję za to, właśnie przetestowałem to rozwiązanie i działa dobrze! Ale czytałem w wielu miejscach, że powinieneś użyć linku w see, żeby to działało, więc to trochę dziwne ... – Robert

+6

Możesz użyć '@ link' w innych miejscach, w których Javadoc nie zamienia się już w link, np w opisie '@param', w opisie' @ return', w głównej części opisu, itp. – rgettman

+0

kiedy po prostu próbowałem tego, wyświetla metodę jako zwykły tekst, którego nie można kliknąć tak jak mój @see dla metoda lokalna. – JesseBoyd

95

Oprócz @see, bardziej ogólny sposób nawiązujące do innej klasy i ewentualnie metoda tej klasy jest {@link somepackage.SomeClass#someMethod(paramTypes)}. Ma to tę zaletę, że można go użyć w środku opisu javadoc.

Z 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

Więc rozwiązanie pierwotnego problemu jest to, że nie trzeba zarówno „@see” i „{...}” @link odniesienia na tej samej linia. Znacznik "@link" jest samowystarczalny i, jak wspomniano, można umieścić go w dowolnym miejscu w bloku javadoc. Możesz więc połączyć oba podejścia:

/** 
* some javadoc stuff 
* {@link com.my.package.Class#method()} 
* more stuff 
* @see com.my.package.AnotherClass 
*/ 
+0

To powinno być zaakceptowaną odpowiedzią, ponieważ pozostałe dwie odpowiedzi nie pokazują, że "@link" lub "@see" muszą być w komentarzu wielowierszowym/** */nie pojedynczym wierszem – Sniper

+0

@Sniper, '{@link}' działa dobrze w jednorzędowym komentarzu Javadoc, czy może odnosisz się do faktu, że nie działają z komentarzami zaczynającymi się od '//'? '/ ** * /' to Javadoc i jest niezbędny dla dowolnych funkcji Javadoc. – Jase

+0

Tak @Jase Spotkałem dokładnie ten komentarz musi być/** * /, ale nie // – Sniper