Link Javadoc ao método em outra classe


238

Atualmente, estou referenciando métodos em outras classes com esta sintaxe Javadoc:

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

E pelo que entendi da documentação, esta é a maneira correta de fazer isso. Mas agora para a parte engraçada, ou frustrante. Quando eu gero esse javadoc, recebo o seguinte erro:

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

O código HTML gerado disso é:

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

E é claro que não tenho link. Alguém pode me dizer o que está acontecendo, e alguma dica sobre como consertar isso?

De acordo com a tabela ASCII, os caracteres 123 e 64 para wold representam {e @, por que esses caracteres não são válidos quando essa sintaxe está correta, de acordo com a documentação?


1
Só para verificar ... você leu a documentação do Javadoc Generator? docs.oracle.com/javase/7/docs/technotes/tools/windows/…
Diogo Moreira

Você importou com.my.package.Classna classe que este JavaDoc está gravado? A referência não encontrada parece estranha. Por outro lado, eu nunca os usei combinados, mas há uma chance de que, @seee @linkentrem em conflito um com o outro, isso @seegera sua própria secessão e não me surpreenderia.
Fritz

1
@DiogoMoreira - Não, eu não li sobre o motor, mas vou dar uma olhada.
Robert

@ Gamb - Claro que não é a minha entrada real do Javadoc ;-) Sim, todas as importações estão em vigor.
Robert

1
Um erro semelhante ocorre se você colocar um hiperlink bruto como o valor da @seetag no seu javadoc. Para corrigi-lo, neste caso, enrole o hiperlink em um elemento html âncora:/** @see <a href="http://example.com">Example</a> */
cyber-monge

Respostas:


280

Para a tag Javadoc @see, você não precisa usar @link; Javadoc criará um link para você. Experimentar

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

Aqui está mais informações sobre @see.


Obrigado por isso, acabei de testar esta solução e isso funciona bem! Mas eu já li em muitos lugares que você deve usar o link para fazer com que isso funcione, então isso é um pouco estranho ... #
Robert

7
Você pode usar @linkem outros lugares que Javadoc já não se transformar em um link, por exemplo, na descrição @param, na descrição @return, na parte principal da descrição, etc.
rgettman

1
quando eu apenas tentei isso, ele exibe o método como texto sem formatação, não é clicável como o meu @see para um método local.
JesseBoyd

146

Além de @see, é uma maneira mais geral de se referir a outra classe e possivelmente método dessa classe {@link somepackage.SomeClass#someMethod(paramTypes)}. Isso tem o benefício de ser utilizável no meio de uma descrição do javadoc.

Na documentação do javadoc (descrição da tag @link) :

Essa tag é muito semelhante ao @see - ambas exigem as mesmas referências e aceitam exatamente a mesma sintaxe para package.class # member e label. A principal diferença é que {@link} gera um link in-line em vez de colocá-lo na seção "Consulte também". Além disso, a tag {@link} começa e termina com chaves para separá-la do restante do texto em linha.


68

Portanto, a solução para o problema original é que você não precisa das referências "@see" e "{@link ...}" na mesma linha. A tag "@link" é auto-suficiente e, como observado, você pode colocá-la em qualquer lugar do bloco javadoc. Então você pode misturar as duas abordagens:

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

4
Essa resposta deve ser aceita porque outras duas respostas não mostram que '@link' ou '@see' precisam estar em comentário de várias linhas / ** * / não em uma única linha
Stoycho Andreev

1
@ Sniper, {@link }funciona bem em um comentário Javadoc de linha única, talvez você esteja se referindo ao fato de que eles não funcionam com comentários começando com //? /** */é Javadoc e é necessário para quaisquer funções Javadoc.
Jase

Sim @Jase, eu conheci exatamente isso, o comentário precisa ser / ** * /, mas não // #
Stoycho Andreev

6
@ Sniper Eu não acho que isso seja a resposta aceita, porque esta é uma pergunta do Javadoc para começar - deve ser geralmente entendido que o Javadoc só funciona nos comentários do Javadoc.
Jase

O @Jase meio que concorda com você, mas acredito que a fonte de informações como o Stackoverflow precisa de explicações por exemplos, não citações da documentação do Oracle ou de alguma outra documentação, o que não está claro, obviamente. Esta resposta é a única resposta que tem exemplo, acima de duas respostas são aspas.
Stoycho Andreev 14/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.