জাভাডোক মন্তব্যে একাধিক লাইন কোড উদাহরণ


531

আমার কাছে একটি ছোট কোডের উদাহরণ রয়েছে আমি কোনও পদ্ধতির জন্য জাভাদোক মন্তব্যে অন্তর্ভুক্ত করতে চাই।

/**
 * -- ex: looping through List of Map objects --
 * <code>
 * for (int i = 0; i < list.size(); i++) {
 *      Map map = (Map)list.get(i);
 *      System.out.println(map.get("wordID"));
 *      System.out.println(map.get("word"));
 * }
 * </code>
 * 
 * @param query - select statement
 * @return List of Map objects
 */

সমস্যাটি জাভাদোকের কোড উদাহরণটি দেখায় যাতে কোনও পংক্তি বিরতি না পড়ে এটি পড়া শক্ত হয়।

-- ex: looping through List of Map objects -- for (int i = 0; i list.size(); i++) { Map map = (Map)list.get(i); System.out.println(map.get("wordID")); System.out.println(map.get("word")); } 
Parameters
query - - select statement 
Returns:
List of Map objects 

আমি অনুমান করি যে কোড ট্যাগটি লাইন ব্রেকগুলি পরিচালনা করবে বলে ধরে নেওয়াতে আমি ভুল। জাভাদোক মন্তব্যে কোড উদাহরণগুলি ফর্ম্যাট করার সর্বোত্তম উপায় কী?

উত্তর:


743

ইতিমধ্যে উল্লিখিত <pre>ট্যাগগুলি ছাড়াও , আপনার @codeজাভাডোক টীকাটিও ব্যবহার করা উচিত , যা এইচটিএমএল সত্তা সম্পর্কিত সমস্যাগুলির ক্ষেত্রে (বিশেষত জেনারিক্স সহ) আসে যখন জীবনকে আরও সহজ করে তোলে, যেমন:

* <pre>
* {@code
* Set<String> s;
* System.out.println(s);
* }
* </pre>

সঠিক এইচটিএমএল আউটপুট দেবে:

Set<String> s;
System.out.println(s);

@codeব্লকটি বাদ দেওয়ার সময় (বা কোনও <code>ট্যাগ ব্যবহার করে ) এর ফলে এইচটিএমএল তৈরি হবে:

Set s;
System.out.println(s);

(রেফারেন্সের জন্য, জাভা এসই 8 ট্যাগ বর্ণনা এখানে পাওয়া যাবে: জাভাদোক ট্যাগ্স )


63
আমিও তাই ভাবতাম, তবে দুর্ভাগ্যক্রমে এটি হয় না, লাইন ব্রেক পেতে আপনার এখনও প্রিপ ট্যাগ যোগ করতে হবে।
ফ্যাবিয়ান স্টেগ

12
দুর্ভাগ্যক্রমে, আপনি যখন সিটিআরএল + শিফট + এফ (এক্লিপসে ফর্ম্যাট কোড) চাপান তখনই গ্রহটি {@code} ট্যাগটি মিস করে এবং rep & # 064; কোড ... এর সাথে প্রতিস্থাপন করে
jpdaigle

3
@jpdaigle আমি সবেমাত্র এ্যালিপস গ্যালিলিও এবং হেলিওজে এটি চেষ্টা করেছি এবং ফর্ম্যাটরটি আমার কোনও কিছুই প্রতিস্থাপন করে না (ম্যাক ওএসে, তবে আমি ফর্ম্যাটরটি অন্য প্ল্যাটফর্মে কখনও এরকম কিছু করতে দেখিনি)।
ফ্যাবিয়ান স্টেগ

30
আরেকটি দুর্ভাগ্যজনক, আপনার যদি কোঁকড়ানো ধনুর্বন্ধনী "{}" ব্যবহার করে আপনার উদাহরণ কোডটিতে ব্লক থাকে তবে প্রথম বন্ধ হওয়া বন্ধনীটি @ কোড ব্লকটি সমাপ্ত করবে। এর চারপাশের একটি উপায় হ'ল বন্ধনীগুলির জন্য এইচটিএমএল সত্তা ব্যবহার করা (এটির জন্য অপেক্ষা করুন ...)। ব্লক সহ কোডের জন্য <প্রে> ট্যাগগুলির জন্য আমি একটি বাধ্যতামূলক যুক্তি দেখতে পাচ্ছি না।
এড গ্রিবেল

2
Eclipse {@code up ট্যাগটিকে বিশৃঙ্খলা করে এবং rep & # 064; কোড- এর সাথে প্রতিস্থাপন করে- এটি গ্রহণের কারণে নয়, এটি (বাগড?) জাভাদোক ইউটিলিটির কারণে। You @ কোড ... মাল্টলাইন ... inside এর ভিতরে মাল্টলাইন কোডে আপনার যদি @ চরিত্রটি থাকে তবে জাভাদোক সঠিকভাবে এটি বিশ্লেষণ করতে ব্যর্থ হন :( কমপক্ষে আমি ওরাকল জেডি কে 1.7.0_45 জাভাদোক বাস্তবায়নের সাথে দেখতে পাচ্ছি
পুরুষ

166

জাভাডোক মন্তব্যে একটি নির্দিষ্ট কোড উদাহরণ সহ আমি সত্যিই কঠিন সময় কাটিয়েছি। আমি এটি শেয়ার করতে চাই।
নিম্নলিখিত নোট করুন:

  • <code>কোঁকড়া বন্ধনী ব্যাখ্যা করা থেকে রোধ করতে পুরানো - ট্যাগের ব্যবহার
  • {@code ...}আউটপুটটিতে জেনেরিকগুলি অন্তর্ভুক্ত করতে "নতুন" - ট্যাগ ব্যবহার
  • @ @Override" সাইন ইন " এর মাধ্যমে পলায়ন {@literal @}Overrideকারণ জাভাদোক জেনারেটর "টিল্টস" আছে কারণ এই কারণে যে @ খোলার কোঁকড়ানো বন্ধনীটি সরাসরি সরাসরি চলে যায়
  • অভ্যন্তরীণ স্পেসগুলি ক্ষতিপূরণ এবং সারিবদ্ধ রাখার জন্য সামনে {@codeএবং একটি স্থান সরিয়ে ফেলুন{@literal

জাভাদোক কোড:

/** this methods adds a specific translator from one type to another type. `
  * i.e.
  * <pre>
  * <code>new BeanTranslator.Builder()
  *   .translate(
  *     new{@code Translator<String, Integer>}(String.class, Integer.class){
  *      {@literal @}Override
  *       public Integer translate(String instance) {
  *         return Integer.valueOf(instance);
  *       }})
  *   .build();
  * </code>
  * </pre>
  * @param translator
  */

হিসাবে মুদ্রিত হয়

new BeanTranslator.Builder()
  .translate(
    new Translator<String, Integer>(String.class, Integer.class){
      @Override
      public Integer translate(String instance) {
        return Integer.valueOf(instance);
      }})
  .build();

2
: "<কোড> মধ্যে {@code} সতর্কীকরণ" এই কাজ কিন্তু আমি একটি সতর্কবার্তা যখন javadoc চলমান এই সতর্কবার্তা outputting পেতে
শেন Rowatt

3
এটিই কাজ করেছেন, গ্রহণযোগ্য উত্তরগুলি আমার গ্রহনে ভালভাবে কাজ করবে না (৪.6.২)
এরিক ওয়াং

আমি কেন এই সমস্ত প্রয়োজনীয় তা অবাক করি, আমার ইন্টেলিজ 13 এবং পরে গৃহীত উত্তরে কোডটি দিয়ে কাজ করুন work এটি কি কেবল গ্রহনের সমস্যা?
বিভিডিবি

হ্যাঁ, আমি এই কাজটি ইন্টেলিজ ১১ এবং তারপরেও দেখেছি fine ইন্টেলিজ এটি সঠিকভাবে পরিচালনা করে। দুর্ভাগ্যক্রমে Eclipse জাভাডককে সঠিকভাবে (হভার স্টেট) রেন্ডার করে না এবং নতুন লাইন এবং এইচটিএমএল ব্রেক উভয়ই উপেক্ষা করে। আমি উভয় আইডিই-তে ভাল কাজ করে এমন একটি সমাধান খুঁজতে চাইছি, যেহেতু তারা আজ দু'জন শীর্ষ আইডিই ব্যবহার করছে।
মাইকেল এম

41

জাভা উত্স এর জন্য প্রচুর ভাল উদাহরণ রয়েছে। "স্ট্রিং.জভা" এর মাথা থেকে এখানে একটি উদাহরণ দেওয়া হয়েছে:

....
 * is equivalent to:
 * <p><blockquote><pre>
 *     char data[] = {'a', 'b', 'c'};
 *     String str = new String(data);
 * </pre></blockquote><p>
 * Here are some more examples of how strings can be used:
 * <p><blockquote><pre>
 *     System.out.println("abc");
 *     String cde = "cde";
 *     System.out.println("abc" + cde);
 *     String c = "abc".substring(2,3);
 *     String d = cde.substring(1, 2);
 * </pre></blockquote>
...

9
সংক্ষেপে,<pre><blockquote>...</blockquote></pre>
জিন কওন

6
বরং<p><blockquote><pre> </pre></blockquote></p>
মাস্টারেক্সিলো

@ জিনকোওন দুঃখজনকভাবে এটি সর্বদা কাজ করে না, আমার কোড স্নিপেটে নয় :( শুরুতে একটি কোড কোড যুক্ত করে, এমনকি যদি সমাপ্তি reached নাও পৌঁছায়
বেনজ

এটি বেশিরভাগ কোডের জন্য কাজ করে বলে মনে হয় তবে কৌনিক বন্ধনীগুলি এড়ায় না List<String>। তার জন্য আমি ব্যবহার করছি <pre>{@code ... }</pre>
ড্যানিয়েল


14

আপনি প্রয়োজন <pre></pre>এবং লাইন বিরতি জন্য ট্যাগ, {@code ... }জেনেরিক্স জন্য তাদের ভিতরে। তবে তারপরে এটি আর একই লাইনে খোলার ব্রেস রাখার অনুমতি নেই<generic> ট্যাগ , কারণ তারপরে সবকিছু আবার 1 লাইনে প্রদর্শিত হবে।

এক লাইনে প্রদর্শন করে:

* ..
* <pre>
* {@code
* public List<Object> getObjects() {
*    return objects;
* }
* </pre>
* ..

লাইন ব্রেকগুলির সাথে প্রদর্শন করে:

* ..
* <pre>
* {@code
* public List<Object> getObjects() 
* {
*    return objects;
* }
* </pre>
* ..

আর একটি অদ্ভুত জিনিস হ'ল আপনি যখন ক্লোজিং বন্ধনীটি পেস্ট করেন {@code, তা প্রদর্শিত হয়:

* ..
* <pre>
* {@code
*   public List<Object> getObjects() 
*   {
*     return objects;
*   }
* }
* </pre>
* ..

আউটপুট:

public List<Object> getObjects() 
{
   return objects;
}
}

4
স্ট্যাক ওভারফ্লোতে আপনাকে স্বাগতম। পোস্টগুলিতে কোড ফর্ম্যাট করতে, আপনি এটি চারটি স্পেস দ্বারা পৃথক অনুচ্ছেদে উপসর্গ করতে পারেন, বা ব্যাকটিক্স দ্বারা ঘিরে (`` ...``)। আপনার দরকার নেই <code>এবং <pre>ট্যাগ লাগবে না । আমি এই উত্তর আপনার উত্তর সম্পাদনা করেছি।
পাওলো ইবারম্যান

10
/**
 * <blockquote><pre>
 * {@code
 * public Foo(final Class<?> klass) {
 *     super();
 *     this.klass = klass;
 * }
 * }
 * </pre></blockquote>
 **/
  • <pre/> লাইন সংরক্ষণের জন্য প্রয়োজন।
  • {@code অবশ্যই তার নিজস্ব লাইন থাকা উচিত
  • <blockquote/> শুধু ইন্ডেন্টেশন জন্য।
public Foo(final Class<?> klass) {
    super();
    this.klass = klass;
}


JDK8 এর সাথে আপডেট করুন

সঠিক কোডগুলির জন্য সর্বনিম্ন প্রয়োজনীয়তা হ'ল <pre/>এবং {@code}

/**
 * test.
 *
 * <pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre>
 */

উৎপাদনের

 <T> void test(Class<? super T> type) {
     System.out.printf("hello, world\n");
 }

এবং একটি surrounding <blockquote/>চ্ছিক পার্শ্ববর্তী একটি ইনডেন্টেশন সন্নিবেশ করায়।

/**
 * test.
 *
 * <blockquote><pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre></blockquote>
 */

উৎপাদনের

     <T> void test(Class<? super T> type) {
         System.out.printf("hello, world\n");
     }

ঢোকানো <p>বা পার্শ্ববর্তী <p>এবং </p>উৎপাদনের সতর্কবার্তা।


5

আমি কোড 1 তে প্রদর্শিত নিম্নলিখিত স্নিপ-সহ ভাল লাগার এইচটিএমএল ফাইলগুলি তৈরি করতে সক্ষম হয়েছি।

 * <pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 *</pre>

(কোড 1)

কোড 1 প্রত্যাশার মতো চিত্র 1-এ উত্পন্ন জাভাদোক এইচটিএমএল পৃষ্ঠায় পরিণত হয়েছে।

A-->B
 \
  C-->D
   \   \
    G   E-->F

(ডুমুর। 1)

তবে নেটবিন্স .2.২ এ, আপনি যদি Alt + Shift + F টি চাপান (বর্তমান ফাইলটি পুনরায় ফর্ম্যাট করতে), কোড 1 কোড 2 তে পরিণত হয়।

 * <
 * pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 * </pre>

(কোড 2)

যেখানে প্রথমটি <pre>এখন দুটি লাইনে বিভক্ত। কোড 2 চিত্র 2-তে দেখানো হয়েছে এমন জ্যাভাদোক এইচটিএমএল ফাইল উত্পন্ন করে।

< pre> A-->B \ C-->D \ \ G E-->F

(চিত্র 2)

স্টিভ বি এর পরামর্শ (কোড 3) সেরা ফলাফল দেয় বলে মনে হচ্ছে এবং Alt + Shift + F টি চাপ দেওয়ার পরেও প্রত্যাশার মতো ফর্ম্যাট থাকবে।

*<p><blockquote><pre>         
* A-->B
*  \
*   C-->D
*    \   \
*     G   E-->F
* </pre></blockquote>

(কোড 3)

3 নং ব্যবহারের ফলে চিত্র 1-এ দেখানো একই জাভাদোক এইচটিএমএল আউটপুট উত্পাদন করা হয়।


4

এখানে আমার দুটি সেন্ট।

অন্যান্য উত্তর যেমন ইতিমধ্যে জানিয়েছে, আপনার <pre> </pre>সাথে কনজাকশন ব্যবহার করা উচিত {@code }

ব্যবহার করুন preএবং{@code}

  • আপনার কোডটি ভিতরে Wেকে রাখা <pre>এবং </pre>আপনার কোডটিকে একটি লাইনে ভেঙে ফেলা বাধা দেয়;
  • ভিতরে আপনার কোড মোড়ানো {@code }প্রতিরোধ <, >অদৃশ্য থেকে মাঝে এবং সবকিছু। এটি বিশেষত কার্যকর যখন আপনার কোডটিতে জেনেরিকস বা ল্যাম্বডা এক্সপ্রেশন থাকে।

টিকা নিয়ে সমস্যা with

আপনার কোড ব্লকে একটি টিকা থাকলে সমস্যাগুলি দেখা দিতে পারে। এটি সম্ভবত কারণ @জাভাদোক লাইনের শুরুতে যখন সাইনটি উপস্থিত হয়, তখন এটি জাভাদোক ট্যাগ হিসাবে @paramবা হিসাবে বিবেচিত হয় @return। উদাহরণস্বরূপ, এই কোডটি ভুলভাবে পার্স করা যায়:

/**
 * Example usage:
 *
 * <pre>{@code
 * @Override
 * public void someOverriddenMethod() {

উপরের কোডটি আমার ক্ষেত্রে সম্পূর্ণ অদৃশ্য হয়ে যাবে।

এটি ঠিক করতে, লাইনটি অবশ্যই কোনও @চিহ্ন দিয়ে শুরু করা উচিত নয় :

/**
 * Example usage:
 *
 * <pre>{@code  @Override
 * public int someMethod() {
 *     return 13 + 37;
 * }
 * }</pre>
 */

নোট করুন যে পরবর্তী লাইনের সাথে জিনিসগুলিকে সারিবদ্ধ রাখার জন্য @codeএবং এর মধ্যে দুটি স্পেস রয়েছে @Override। আমার ক্ষেত্রে (অ্যাপাচি নেটবিয়ান ব্যবহার করে) এটি সঠিকভাবে উপস্থাপন করা হয়েছে।


3

তার মাঝে একটি উল্লেখযোগ্য পার্থক্য নেই <blockquote><pre>...এবং<pre>{@code.... প্রাক্তন জেনারিকগুলিতে প্রকারের ঘোষণাগুলি বাদ দেবে তবে পরবর্তীকালে এটি রাখা হবে।

E.g.: List<MyClass> myObject = null;List myObject = null;ফার্মগুলির List<MyClass> myObject = null;সাথে এবং দ্বিতীয় হিসাবে প্রদর্শিত হয়


2

আপনি যদি অ্যান্ড্রয়েড বিকাশকারী হন তবে আপনি এটি ব্যবহার করতে পারেন:

<pre class=”prettyprint”>

TODO:your code.

</pre>

জাভা কোডের সাথে জাভাদকে আপনার কোডটি প্রিন্ট করতে।


1
দয়া করে ব্যাখ্যা করুন: @ কোড কোডের প্রয়োজনীয় সমস্যাগুলি বিবেচনা করে অ্যান্ড্রয়েডের সরঞ্জামগুলিতে এই কাজটি করা উচিত? এবং কোন উপাদানটির প্রশংসাপত্র শ্রেণীর সংজ্ঞা দেওয়া উচিত? অ্যান্ড্রয়েড নিয়মিত জাভাদোক ব্যবহার করে।
noamtm

জামারিন / ভিএস, অ্যান্ড্রয়েড স্টুডিও, বা এটি কোনও বিষয় নয়?
tyblu

@tyblu অ্যান্ড্রয়েড স্টুডিও কাজ করে, তবে জামারিন স্টুডিও / ভিএস সম্ভবত কাজ করে না You আপনি চেষ্টা করতে পারেন।
ifeegoo

1

"কোড" এর পরিবর্তে "প্রাক" দিয়ে চেষ্টা করুন। এইচটিএমএলের প্রাক ট্যাগটি পাঠ্যটিকে পূর্বরূপিত হিসাবে চিহ্নিত করে এবং সমস্ত লাইনফিড এবং স্পেসগুলি ঠিক আপনার টাইপ করার সময় উপস্থিত হবে।


1

আমি শুধু Javadoc 1.5 রেফারেন্স পড়া এখানে , এবং শুধুমাত্র কোড <এবং >ভিতরে ঘিরা করা আবশ্যক {@code ...}। এখানে একটি সহজ উদাহরণ:

 /** 
 * Bla bla bla, for example:
 *
 * <pre>
 * void X() {
 *    List{@code <String>} a = ...;
 *    ...
 * }
 * </pre>
 *
 * @param ...
 * @return ...
 */
 .... your code then goes here ...

0

আমি <pre class="brush: java"></pre>ট্যাগগুলির সাথে আমার উদাহরণ কোডটি সংযুক্ত করে প্রকাশিত জাভাদোকসের জন্য সিনট্যাক্স হাইটল্টার ব্যবহার করি। এটি আইডিইর ক্ষতি করে না এবং প্রকাশিত কোড উদাহরণগুলি সুন্দর করে।


হাইলাইট এ জিজ্ঞেস করেন: stackoverflow.com/questions/1391614/...
সিরো Santilli郝海东冠状病六四事件法轮功

সিনট্যাক্স হাইলাইটারের সাথে আপনাকে অবশ্যই স্ক্রিপ্ট লোড করতে হবে এবং সিএসএস সঠিক করতে হবে। আশ্চর্যজনক দেখাচ্ছে, তবে আপনাকে অবশ্যই প্রয়োজনীয় স্ক্রিপ্ট এবং সিএসএসের সঠিক পথ রাখতে হবে। এছাড়াও, যদি অফলাইন ব্যবহার করতে চান তবে অবশ্যই সঠিক পথগুলি সম্পর্কে সতর্ক থাকতে হবে।
অ্যালেক্স বাইথ

0

জাভা SE 1.6 ব্যবহার করে, দেখে মনে হচ্ছে জাভাডোকের সমস্ত UPPERCASE PRE সনাক্তকারীরা এটি করার সেরা উপায়:

/**
 * <PRE>
 * insert code as you would anywhere else
 * </PRE>
 */

এটি করার সহজতম উপায়।

জাভাডোকের একটি উদাহরণ আমি একটি জাভা.ওয়ট.এভেন্ট পদ্ধতি থেকে পেয়েছি:

/**
 * <PRE>
 *    int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
 *    int offmask = CTRL_DOWN_MASK;
 *    if ((event.getModifiersEx() & (onmask | offmask)) == onmask) {
 *        ...
 *    }
 * </PRE>
 */

এটি আউটপুট উত্পন্ন করে যা নিয়মিত কোড স্পেসিং এবং নতুন লাইন অক্ষত সহ নিয়মিত কোডের মতো লাগে।


2
এটি বিদ্যমান উত্তরের সাথে কিছু যোগ করে না।
madth3

ম্যাডথ 3, তুমি ঠিক বলেছ আমি ভাবলাম আমি কম বনাম ইউপিপ্রেসেসি প্রি মডিফায়ার ব্যবহার করার সময় একটি তফাত দেখেছি, তবে দ্বিতীয় বর্ণনায় এটির মতো বলে মনে হচ্ছে না। এটি কীভাবে জাভাডোকে প্রদর্শিত হয় বনাম এই ওয়েবপৃষ্ঠায় এটি কীভাবে প্রকাশিত হয়েছিল তার সাথে কিছু করারও থাকতে পারে।
ইউজিন_সিডি-অ্যাডাপকো

1
এইচটিএমএল ট্যাগে সংবেদনশীল?
জেসনউ

0

কমপক্ষে ভিজ্যুয়াল স্টুডিও কোডে, আপনি জাভাডোক মন্তব্যটিকে লাইন-ব্রেকগুলিকে ট্রিপল-ব্যাকটিক্সে আবদ্ধ করে শ্রদ্ধার জন্য জোর করতে পারেন, নীচের মত:

/** ```markdown
 * This content is rendered in (partial) markdown.
 * 
 * For example, *italic* and **bold** text works, but [links](https://www.google.com) do not.
 * Bonus: it keeps single line-breaks, as seen between this line and the previous.
 ``` */
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.