用纯java编写一个程序查找某个.java文件里的class后的类名及extends后的类名
并输出这两个类名(其它文件内容就不输出了);
(急求程序)这个题目费了四天时间了现在都快疯了还没想出来.请高手帮帮忙.(希望给个完整的程序)
万分感谢!

解决方案 »

  1.   

    可以参考一下下面的程序:
    import java.io.*;
    import java.util.StringTokenizer;class A {}public class Read extends A {    public static void phase(String fileName) {
            String className = "";
            String superClassName = "";
            try {
                FileReader fis = new FileReader(fileName);
                BufferedReader reader = new BufferedReader(fis);
                String line;
                while ((line = reader.readLine()) != null) {
                    if (line.contains("class")) {
                        StringTokenizer tokenizer = new StringTokenizer(line);
                        while (tokenizer.hasMoreElements()) {
                            String word = tokenizer.nextToken();
                            if (word.equals("class")) {
                                if (tokenizer.hasMoreElements()) {
                                    className = tokenizer.nextToken();
                                }
                            } else if (word.equals("extends")) {
                                if (tokenizer.hasMoreElements()) {
                                    superClassName = tokenizer.nextToken();
                                }
                            }
                        }
                    }
                }
            } catch (IOException ioex) {
                ioex.printStackTrace();
            }        System.out.println("ClassName: " + className
                               + ", SuperClassName: "
                               + superClassName);
        }    /**
         * @param args
         */
        public static void main(String[] args) {
            Read.phase("Read.java");
        }}
      

  2.   

    用正则表达式匹配吧!
    可以匹配
    public class Test
    public class Test extends Object {");
    public class Test extends Object implements Runnable  {");    Pattern p = Pattern.compile("class\\s*(\\w+)(\\s+extends\\s+(\\w+)(\\s+.*?)?)?\\s*\\{",Pattern.DOTALL);
        Matcher m = p.matcher("public class Test extends Object implements Runnable  {");
        if(m.find()) {
          System.out.println(m.group(1));
          System.out.println(m.group(3));
        }
      

  3.   

    那个支持多行匹配,也就是
    public
     class
    Test
    extends 
    Object { 这样的格式都可以