JAVA中是允许采用
/**
*/
这种注释形式的,并且可以其中加入参数.
请问通过什么API或者第三方类可以得到这些注释内容

解决方案 »

  1.   

    可以写个类专门分析java源码,碰到注释就读出
    可以考虑用正则表达式
      

  2.   

    源代码没问题,javadoc就是用这个读取的如果是.class则没戏了。你可以考虑用
    @Anoation 来解决
      

  3.   

    我一直接认为awk是文本处理最好的工具,简单实用,这是我用awk写的输出java注释的程序:
    BEGIN { 
      stat=0; 
     } 
    /\/\// {
      gsub(".*//","");
      print "//"$0;

    /\/\*/ {
        x1=index($0,"/*");
        x2=index($0,"*/");
        if (x2)
          print substr($0,x1,x2-x1+2);
          else
            stat=1;  
        next;      
    }
    /\*\// {     x2=index($0,"*/");
         print substr($0,1,x2+2);
         stat=0;
    }
    {
      if (stat)
        print $0;
    }
    测试程序如下:import java.util.*;
    class testv {

    /**
     * Method main
     *
     *
     * @param args
     *
     */
    public static void main(String[] args) {
    // TODO: Add your code here
    class M {
    int a1; /* 测试...测试 */
    } ;
    M m1,m=new M();
    m.a1=100;
    Vector v = new Vector() ;
            v.add(0,m);
            /* 以下还是测试 
            ...
            测试结束
            */
            m1=(M)v.elementAt(0);
            System.out.println(m1.a1);
    }
    }用awk -f b.awk testv.java
    结果如下:
    ========================================
             * Method main
             *
             *
             * @param args
             *
             */
    // TODO: Add your code here
    /* 测试...测试 */
            ...
            测试结束
            */
    =====================================
    当然,我前几天刚写了一个去C/C++注释的awk程序(java的注释与它相同)
    BEGIN {
     stat=0;
     }
    {
    gsub(/\/\*.*\*\//,"");
    gsub(/\/\/.*/,"");
            s=$0;
            if (stat==0)
              if ((s~/\/\*/) && (s!~/\*\//)) {
                stat=1;
                gsub(/\/\*.*/,"");
                print $0;
                next;
              }
            if (stat==1)
             {
                if (s!~/\*\//) {
                       next;
                  } 
                  else
                  {
                     gsub(/.*\*\//,"");
                     stat=0;
               }
             }         
    print $0;
    }
    用上面的java程序测试:
    awk -f a.awk testv.java
    结果如下:import java.util.*;
    class testv {        public static void main(String[] args) {                class M {
                            int a1;
                    } ;
                    M m1,m=new M();
                    m.a1=100;
                    Vector v = new Vector() ;
            v.add(0,m);
            m1=(M)v.elementAt(0);
            System.out.println(m1.a1);
            }
    }
      

  4.   

    有些小问题
    /* 以下还是测试
    没出来,改进过的:
    BEGIN { 
      stat=0; 
     } 
    /\/\// {
      gsub(".*//","");
      print "//"$0;

    /\/\*/ {
        x1=index($0,"/*");
        x2=index($0,"*/");
        if (x2)
          print substr($0,x1,x2-x1+2);
          else
            stat=1;  
    }
    /\*\// {
      if (stat)
        {
         x2=index($0,"*/");
         print substr($0,1,x2+2);
         stat=0;
        } 
    }
    {
      if (stat)
        print $0;
    }
      

  5.   

    正统的说,就是用java 自带的工具,javadoc 呀,生成的html文档,说明是相当详细的!