2011-12-14 22 views
23

Ben zamanında Javadoc yorumları okumak için nasıl bilmek gerekir Yansıma tarafından Javadoc yorumu okunuyor?

Ben aşağıdaki işlevi var ki (muhtemelen yansıma yoluyla?):

/** 
* function that do some thing 
*/ 
public void myFunc() 
{ 

    //... 
} 

Çalışma zamanında, bu işlevi hakkında çok bilgi alabilirsiniz Yansıma .. Ancak yorumları okuyamaz. Yani soru şu ki, çalışma zamanı bu javadoc yorumunu nasıl okuyacağım.

+0

onlar ile yapılabilir olamaz diyor derlenmiş kod, kaynak kodu ile yapabilmeniz gerekir. Ve bunu yapmak için "javadoc'u kaynaktan al" komutunu aramayı deneyin ve ardından bazı açık kaynak araçlarını bulun ve ihtiyacınıza göre değiştirin. –

+0

Ben kaynak kodunun sahibi olduğumdan beri @Puce ile gitmek çok daha kolay olduğunu düşünüyorum! –

+1

Asıl soru şudur: JavaDocs'a ne için ihtiyacınız var? Kullanım durumu nedir? – Thomas

cevap

14

Javadoc yerine ek açıklamalar kullanmayı ve bir ek not işlemci yazmayı düşünün.

16

Yapamazsınız. Derlenmiş koddan kaldırıldılar.

7

Bunu yapamazsınız, çünkü javadoc son sınıflara derlenmez.

30

Doclet sınıfı:

public class ExtractCommentsDoclet { 
    public static boolean start(RootDoc root) throws IOException { 
     for (ClassDoc c : root.classes()) { 
      print(c.qualifiedName(), c.commentText()); 
      for (FieldDoc f : c.fields(false)) { 
       print(f.qualifiedName(), f.commentText()); 
      } 
      for (MethodDoc m : c.methods(false)) { 
       print(m.qualifiedName(), m.commentText()); 
       if (m.commentText() != null && m.commentText().length() > 0) { 
        for (ParamTag p : m.paramTags()) 
         print(m.qualifiedName() + "@" + p.parameterName(), p.parameterComment()); 
        for (Tag t : m.tags("return")) { 
         if (t.text() != null && t.text().length() > 0) 
          print(m.qualifiedName() + "@return", t.text()); 
        } 
       } 
      } 
     } 
     return true; 
    } 

    private static void print(String name, String comment) throws IOException { 
     if (comment != null && comment.length() > 0) { 
      new FileWriter(name + ".txt").append(comment).close(); 
     } 
    } 
} 

Ve maven yürütme: sınıfyolundan

<plugin> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <extensions>true</extensions> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>aggregate</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doclet>ExtractCommentsDoclet</doclet> 
     <docletPath>${project.build.directory}/classes</docletPath> 
     <reportOutputDirectory>${project.build.outputDirectory}/META-INF</reportOutputDirectory> 
     <useStandardDocletOptions>false</useStandardDocletOptions> 
    </configuration> 
</plugin> 

Oku docs: Burada 2 cevaplar yana META-INF/apidocs

+0

güzel bir, maven içinde tools.jar jdk'den nasıl eklersiniz? – TecHunter

+0

Heh, javadoc'u çalışma zamanında okumak ister misin? - Sorun değil, yüzbaşı! Senin için bir çözüm yazacağım! :-) Ama sanırım cevabınızın sonunda bir soruyu kaçırdın: - Bunu neden yapmalısın? Mikroskop kullanarak çivi çakmak mümkündür, ancak böyle şeyler yapmak için tasarlanmamıştır. – 4ndrew