अन्य वर्ग में विधि के लिए Javadoc लिंक


238

वर्तमान में मैं इस जावदोक सिंटैक्स के साथ अन्य वर्गों में विधियों का संदर्भ दे रहा हूं:

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

और जो मैं प्रलेखन से समझता हूं, वह ऐसा करने का सही तरीका है। लेकिन अब मजाकिया हिस्से में, या निराशा होती है। जब मैं इस javadoc को उत्पन्न करता हूं, तो सबसे पहले मुझे निम्नलिखित त्रुटि मिलती है:

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

इसका जेनरेट किया गया HTML कोड है:

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

और हां मेरा कोई लिंक नहीं है। क्या कोई मुझे बता सकता है कि क्या हो रहा है, और कोई संकेत है कि इसे कैसे ठीक किया जाए?

एएससीआईआई तालिका के अनुसार वर्णमाला के लिए 123 और 64 अक्षर {और @ का प्रतिनिधित्व करते हैं, इसलिए जब दस्तावेज़ के अनुसार यह वाक्यविन्यास सही है तो ये वर्ण मान्य क्यों नहीं हैं?


1
बस जांच करने के लिए ... क्या आपने जावदोक जनरेटर प्रलेखन पढ़ा है? docs.oracle.com/javase/7/docs/technotes/tools/windows/…
Diogo Moreira

क्या आपने com.my.package.Classकक्षा में आयात किया है यह जावाडॉक लिखा है? जो संदर्भ नहीं मिला वह अजीब लगता है। दूसरी ओर, मैंने उन्हें कभी भी संयुक्त रूप से इस्तेमाल नहीं किया है, लेकिन एक मौका है @seeऔर एक @link-दूसरे के साथ संघर्ष, जो @seeअपने स्वयं के seciton उत्पन्न करता है यह मुझे आश्चर्यचकित नहीं करेगा।
फ्रिट्ज़

1
@DiogoMoreira - नहीं, मैंने इंजन के बारे में नहीं पढ़ा, लेकिन मैं इसकी जांच करूंगा।
रॉबर्ट

@ जुआ - बेशक यह मेरा वास्तविक जावदॉक इनपुट नहीं है;; जी हां सभी आयात जगह पर हैं।
रॉबर्ट

1
यदि आप @seeअपने javadoc में टैग के लिए मान के रूप में एक कच्ची हाइपरलिंक डालते हैं तो ऐसी ही त्रुटि होती है । इस मामले में इसे ठीक करने के लिए html एंकर तत्व में हाइपरलिंक लपेटें:/** @see <a href="http://example.com">Example</a> */
साइबर-साधु

जवाबों:


280

Javadoc टैग के लिए @see, आपको उपयोग करने की आवश्यकता नहीं है @link; Javadoc आपके लिए एक लिंक बनाएगा। प्रयत्न

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

यहाँ के बारे में अधिक जानकारी है @see


इसके लिए धन्यवाद, मैंने अभी इस समाधान का परीक्षण किया है और यह ठीक काम करता है! लेकिन मैंने कई स्थानों पर पढ़ा है कि आपको इसे काम करने के लिए देखने के लिए लिंक का उपयोग करना चाहिए, इसलिए यह थोड़ा अजीब है ...
रॉबर्ट

7
आप @linkअन्य स्थानों पर उपयोग कर सकते हैं, जो कि जावदोक पहले से ही एक लिंक में नहीं बदलता है, उदाहरण के लिए विवरण @paramमें, विवरण @returnके मुख्य भाग में, आदि के लिए
rgettman

1
जब मैंने इसे आज़माया तो यह विधि को सादे पाठ के रूप में प्रदर्शित करता है यह स्थानीय पद्धति के लिए मेरे @ जैसे की तरह क्लिक करने योग्य नहीं है।
जेसीबॉयड

146

इसके अलावा @see, किसी अन्य वर्ग को संदर्भित करने का एक अधिक सामान्य तरीका और संभवतः उस वर्ग का तरीका है {@link somepackage.SomeClass#someMethod(paramTypes)}। यह एक jadadoc विवरण के बीच में प्रयोग करने योग्य होने का लाभ है।

से जावाडोक प्रलेखन (@link टैग का वर्णन) :

यह टैग @see के लिए बहुत simliar है - दोनों को समान संदर्भों की आवश्यकता होती है और पैकेज के लिए बिल्कुल समान सिंटैक्स स्वीकार करते हैं। # सदस्य और लेबल। मुख्य अंतर यह है कि {@link} लिंक को "See Also" अनुभाग में रखने के बजाय एक इन-लाइन लिंक बनाता है। इसके अलावा, {@link} टैग शुरू होता है और इसे शेष इन-लाइन टेक्स्ट से अलग करने के लिए घुंघराले ब्रेसिज़ के साथ शुरू होता है।


68

इसलिए मूल समस्या का हल यह है कि आपको "@ @" और "{@link ...}" दोनों संदर्भों की एक ही पंक्ति में आवश्यकता नहीं है। "@Link" टैग आत्मनिर्भर है और, जैसा कि कहा गया है, आप इसे जावदॉक ब्लॉक में कहीं भी रख सकते हैं। तो आप दो दृष्टिकोणों को मिला सकते हैं:

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

4
इसका उत्तर स्वीकार किया जाना चाहिए क्योंकि अन्य दो उत्तर यह नहीं दिखाते हैं कि '@link' या '@see' को कई पंक्ति टिप्पणी / ** * में होने की आवश्यकता नहीं है
स्टोचो एंड्रीव

1
@ स्नाइपर, {@link }एकल-पंक्ति जेवाडॉक टिप्पणी में ठीक काम करता है, क्या आप शायद इस तथ्य का उल्लेख कर रहे हैं कि वे टिप्पणियों के साथ काम नहीं करते हैं //? /** */Javadoc है और किसी भी Javadoc फ़ंक्शन के लिए आवश्यक है।
जस

हां @ जसे मैं ठीक से मिला, इस टिप्पणी की जरूरत है / ** * /, लेकिन नहीं //
Stoycho Andreev

6
@ स्नाइपर मुझे नहीं लगता कि इसे स्वीकार किए जाने वाले उत्तर की आवश्यकता है क्योंकि यह एक जावदोक प्रश्न है जिसके साथ शुरू करना है - यह आमतौर पर समझा जाना चाहिए कि जावदोक केवल जावदोक टिप्पणियों में काम करता है।
जसे

@ जेजे आप से सहमत हैं, लेकिन मेरा मानना ​​है कि स्टैकओवरफ्लो जैसी जानकारी के स्रोत को ओरेकल दस्तावेज या कुछ अन्य प्रलेखन के उद्धरणों के उदाहरणों के स्पष्टीकरण की आवश्यकता है, जो स्पष्ट रूप से स्पष्ट नहीं है। यह उत्तर एकमात्र उत्तर है जिसका उदाहरण है, ऊपर दो उत्तर उद्धरण हैं।
स्टॉयचो एंड्रीव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.