Javadoc में विधि का संदर्भ कैसे लें?


864

मैं @linkकिसी विधि से लिंक करने के लिए टैग का उपयोग कैसे कर सकता हूं ?

मैं बदलना चाहता हूँ:

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

लेकिन मुझे नहीं पता कि @linkटैग को सही तरीके से कैसे प्रारूपित किया जाए ।


22
मुझे पता है कि यह कुछ साल पहले है लेकिन ... आधिकारिक जावा कक्षाओं को देखने से आपको जरूरत पड़ने पर जावदोक के किसी भी रूप को खोजने में मदद मिल सकती है। उदाहरण के लिए HashMap Javadoc को देखें।
क्रिस्टोफ रूसो

जवाबों:


1121

आपको जावा डॉक के बारे में मानक डॉकलेट के लिए डॉक्यूमेंटेशन कमेंट स्पेसिफिकेशन में बहुत सी जानकारी मिल जाएगी , जिसमें जानकारी शामिल है

{@link package.class # सदस्य लेबल}

टैग (कि आप के लिए देख रहे हैं)। प्रलेखन से संबंधित उदाहरण इस प्रकार है

उदाहरण के लिए, यहाँ एक टिप्पणी है जो getComponentAt (int, int) विधि को संदर्भित करती है:

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

package.classयदि संदर्भित किया जाता विधि वर्तमान कक्षा में है हिस्सा ommited जा सकता है।


JavaDoc के बारे में अन्य उपयोगी लिंक हैं:


743

सामान्य प्रारूप, javadoc प्रलेखन के @link अनुभाग से है:

{@link package.class # सदस्य लेबल}

उदाहरण

एक ही कक्षा में विधि:

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

एक अलग वर्ग में विधि , या तो एक ही पैकेज में या आयातित:

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

एक अलग पैकेज में विधि और आयातित नहीं:

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

कोड फ़ॉन्ट के बजाय सादे पाठ में विधि से जुड़ा लेबल :

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

विधि कॉल की एक श्रृंखला, आपके प्रश्न के रूप में। हमें इस वर्ग के बाहर के तरीकों के लिंक के लिए लेबल निर्दिष्ट करना होगा, या हम प्राप्त करेंगे getFoo().Foo.getBar().Bar.getBaz()। लेकिन ये लेबल नाजुक हो सकते हैं; नीचे "लेबल" देखें।

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

लेबल

स्वचालित रीफ़ैक्टरिंग लेबल को प्रभावित नहीं कर सकता है। इसमें विधि, वर्ग या पैकेज का नाम बदलना शामिल है; और विधि हस्ताक्षर को बदलना।

इसलिए, यदि आप डिफ़ॉल्ट से भिन्न पाठ चाहते हैं, तो केवल एक लेबल प्रदान करें ।

उदाहरण के लिए, आप मानव भाषा से कोड में लिंक कर सकते हैं:

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

या आप डिफ़ॉल्ट से अलग पाठ के साथ एक कोड नमूने से लिंक कर सकते हैं, जैसा कि "विधि कॉल की एक श्रृंखला" के तहत ऊपर दिखाया गया है। हालांकि, यह नाजुक हो सकता है जबकि एपीआई विकसित हो रहे हैं।

इरेज़र और # मेम्बर टाइप करें

यदि विधि हस्ताक्षर में पैरामीटर किए गए प्रकार शामिल हैं, तो javadoc @link में उन प्रकारों को मिटाने का उपयोग करें। उदाहरण के लिए:

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

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

प्रतीक्षा करें: मुझे बस लिंक के साथ विधि का नाम चाहिए, मुझे कक्षा का नाम नहीं चाहिए।
जेसन एस

आह ठीक है। ऊपर दिए गए लिंक में पहला उदाहरण दिखाता है कि।
एंडी थॉमस

1
एक जावा 6 लिंक प्रदान करने के लिए जिसे मैं ओरेकल जावाडॉक हॉवटो पेज से लिंक नहीं किया गया था। मैं अभी भी ओरेकल लिंक के साथ नहीं मिल सकता ... (मेरे जवाब में जावा 6 के लिए निश्चित लिंक)।
FrVaBe


@ पाओलो एबरमन धन्यवाद! भविष्य में प्रवेश बिंदु के रूप में 'डॉक्स' पृष्ठ का उपयोग करने का प्रयास करेगा।
FrVaBe

16

आप ऐसा करने के @seeलिए उपयोग कर सकते हैं :

नमूना:

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

4
ओपी: "मैं एक विधि से लिंक करने के लिए @link टैग का उपयोग कैसे कर सकता हूं?" @Link टैग, एक पैरा के भीतर इस्तेमाल किया इनलाइन हो सकता है के रूप में ओ पी द्वारा अनुरोध किया। @See टैग नहीं कर सकते। इस प्रश्न पर अधिक विस्तार से देखें ।
एंडी थॉमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.