2013-07-05 14 views
141

metodi Attualmente sto fanno riferimento in altre classi con questa sintassi Javadoc:Javadoc link per il metodo in altra classe

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

E in quello che ho capito dalla documentazione questo è il modo corretto per farlo. Ma ora per la parte divertente, o frustrante. Quando ho generano questo javadoc ho prima di tutto ottenere seguente errore:

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

il codice HTML generato questo è:

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

E naturalmente non ho alcun legame. Qualcuno può dirmi cosa sta succedendo e qualche suggerimento su come risolvere questo problema?

Secondo i caratteri di tabella ASCII 123 e 64 per wold rappresentano {e @, quindi perché questi caratteri non sono validi quando questa sintassi è corretta secondo la documentazione?

+1

Solo per controllare ... hai letto la documentazione di Javadoc Generator? http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#link –

+0

Hai importato 'com.my.package.Class' nella classe in cui è scritto JavaDoc? Il riferimento non trovato sembra strano. D'altra parte, non li ho mai usati combinati, ma c'è una possibilità che '@ see' e' @ link' entrino in conflitto tra loro, considerando che '@ see' genera il proprio seciton che non mi sorprenderebbe. – Gamb

+1

@DiogoMoreira - No, non ho letto sul motore, ma lo controllerò. – Robert

risposta

183

Per il tag Javadoc @see, non è necessario utilizzare @link; Javadoc creerà un collegamento per te. Prova

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

Here's more info about @see.

+0

Grazie per questo, ho appena testato questa soluzione e questo funziona perfettamente! Ma ho letto in così tanti posti che dovresti usare il link per vedere come funziona, quindi è un po 'strano ... – Robert

+6

Puoi usare '@ link' in altri posti che Javadoc non si trasforma in un collegamento, ad es nella descrizione per '@ param', nella descrizione per' @ return', nella parte principale della descrizione, ecc. – rgettman

+0

quando ho appena provato questo visualizza il metodo come testo normale non è selezionabile come il mio @see per un metodo locale. – JesseBoyd

95

parte @see, un modo più generale riferendosi ad un altro metodo di classe e, eventualmente, di quella classe è {@link somepackage.SomeClass#someMethod(paramTypes)}. Questo ha il vantaggio di essere utilizzabile nel mezzo di una descrizione javadoc.

Dal 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

Quindi la soluzione al problema originale è che non hai bisogno di entrambe le "@see" e le "{@link ...}" referenze sullo stesso linea. Il tag "@link" è autosufficiente e, come noto, puoi metterlo ovunque nel blocco javadoc. Quindi puoi unire i due approcci:

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

Questa risposta dovrebbe essere accettata perché altre due risposte non mostrano che '@link' o '@see' devono essere nel commento di più righe/** */non riga singola – Sniper

+0

@Sniper, '{@link}' funziona bene in un commento Javadoc a riga singola, ti riferisci forse al fatto che non funzionano con commenti che iniziano con '//'? '/ ** * /' è Javadoc ed è necessario per qualsiasi funzione Javadoc. – Jase

+0

Sì @Jase Ho incontrato esattamente questo il commento deve essere/** * /, ma non // – Sniper

Problemi correlati