Hoe referentie een methode in Javadoc?

Hoe kan ik de @linktag gebruiken om naar een methode te koppelen?

Ik wil wijzigen:

/**
 * 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()

naar:

/**
 * 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()

Maar ik weet niet hoe ik de @linktag correct formatteren.


Antwoord 1, Autoriteit 100%

U vindt veel informatie over Javadoc op de Documentatie-commentaarspecificatie voor de standaard doclet , inclusief de informatie op de

{ @Link Package.class # lid Label}

Tag (waarnaar u op zoek bent). Het overeenkomstige voorbeeld van de documentatie is als volgt

Hier is hier een opmerking die verwijst naar de GETCOMPONENTAT (INT-, INT) -methode:

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

De package.classPART KAN WORDEN VERMELDIGD ALS DE VERWIJZE METHODE IN DE HUIDIGE KLASSE IS.


Andere handige links over Javadoc zijn:


Antwoord 2, autoriteit 67%

Het algemene formaat, van de @link sectie van de javadoc documentatie, is:

Voorbeelden

Methode in dezelfde klas:

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

Methode in een andere klasse,in hetzelfde pakket of geïmporteerd:

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

Methode in een ander pakketen niet geïmporteerd:

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

Label gekoppeld aan methode, in platte tekstin plaats van codelettertype:

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

Een reeks methodeaanroepen,zoals in uw vraag. We moeten labels specificeren voor de links naar methoden buiten deze klasse, of we krijgen getFoo().Foo.getBar().Bar.getBaz(). Maar deze labels kunnen kwetsbaar zijn tijdens refactoring — zie “Labels” hieronder.

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

Labels

Geautomatiseerde refactoring heeft mogelijk geen invloed op labels.Dit omvat het hernoemen van de methode, klasse of pakket; en de handtekening van de methode wijzigen.

Geef daarom alleeneen label op als u andere tekst wilt dan de standaardtekst.

U kunt bijvoorbeeld een koppeling maken van menselijke taal naar code:

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

Of u kunt een koppeling maken vanuit een codevoorbeeld met andere tekst dan de standaardtekst, zoals hierboven weergegeven onder ‘Een reeks methodeaanroepen’. Dit kan echter kwetsbaar zijn terwijl API’s zich ontwikkelen.

Typ wissen en #member

Als de handtekening van de methode geparametriseerde typen bevat, gebruik dan het wissen van die typen in de javadoc @link. Bijvoorbeeld:

int bar( Collection<Integer> receiver ) { ... }
/** See also {@link #bar(Collection)}. */
void foo() { ... }

Antwoord 3

je kunt @seegebruiken om dat te doen:

voorbeeld:

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

Other episodes