Question Comment référencer une méthode dans javadoc?


Comment puis-je utiliser le @link tag pour lier à une méthode?

je veux changer

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to getFoo().getBar().getBaz()
 * @return baz
 */
public Baz fooBarBaz()

à

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to {@link getFoo()}.{@link getBar()}.{@link getBaz()}
 * @return baz
 */
public Baz fooBarBaz()

mais je ne sais pas comment formater @link étiqueter correctement.


627
2018-05-06 19:15


origine


Réponses:


Vous trouverez beaucoup d'informations sur JavaDoc au JavaDoc Tool page de référence, y compris les informations sur

{@link package.class # label membre}

tag (que vous cherchez):

Par exemple, voici un commentaire qui fait référence à la méthode getComponentAt (int, int):

Use the {@link #getComponentAt(int, int) getComponentAt} method.


D'autres liens utiles sur JavaDoc sont:


836
2018-05-06 19:25



Le format général, à partir du Section @link de la documentation de javadoc, est:

{@link package.class#member label}

Exemples

Méthode dans la même classe:

/** See also {@link #myMethod(String)}. */
void foo() { ... }

Méthode dans un classe différente, soit dans le même paquet ou importé:

/** See also {@link MyOtherClass#myMethod(String)}. */
void foo() { ... }

Méthode dans un paquet différent et non importé:

/** See also {@link com.mypackage.YetAnotherClass#myMethod(String)}. */
void foo() { ... }

Etiquette liée à la méthode, en texte clair plutôt que la police de code:

/** See also this {@linkplain #myMethod(String) implementation}. */
void foo() { ... }

Une chaîne d'appels de méthode, comme dans votre question. Nous devons spécifier des étiquettes pour les liens vers des méthodes en dehors de cette classe, ou nous obtenons getFoo().Foo.getBar().Bar.getBaz(). Mais ces étiquettes peuvent être fragiles; Voir "Étiquettes" ci-dessous.

/**
 * A convenience method, equivalent to 
 * {@link #getFoo()}.{@link Foo#getBar() getBar()}.{@link Bar#getBaz() getBaz()}.
 * @return baz
 */
public Baz fooBarBaz()

Étiquettes

Le refactoring automatisé peut ne pas affecter les étiquettes. Cela inclut le changement de nom de la méthode, de la classe ou du package; et changer la signature de la méthode.

Par conséquent, fournissez une étiquette seulement si vous voulez un texte différent de celui par défaut. 

Par exemple, vous pouvez lier du langage humain au code:

/** You can also {@linkplain #getFoo() get the current foo}. */
void setFoo( Foo foo ) { ... }

Vous pouvez également lier à partir d'un exemple de code un texte différent de celui par défaut, comme indiqué ci-dessus dans la section "Une chaîne d'appels de méthode". Cependant, cela peut être fragile alors que les API évoluent.

Type effacement et # membre

Si la signature de la méthode inclut des types paramétrés, utilisez l'effacement de ces types dans javadoc @link. Par exemple:

int bar( Collection<Integer> receiver ) { ... }

/** See also {@link #bar(Collection)}. */
void foo() { ... }

584
2018-05-06 19:17



vous pouvez utiliser @see pour faire ça:

échantillon:

interface View {
        /**
         * @return true: have read contact and call log permissions, else otherwise
         * @see #requestReadContactAndCallLogPermissions()
         */
        boolean haveReadContactAndCallLogPermissions();

        /**
         * if not have permissions, request to user for allow
         * @see #haveReadContactAndCallLogPermissions()
         */
        void requestReadContactAndCallLogPermissions();
    }

13
2018-01-12 02:17