Java-Extract接口到文件

Java-Extract接口到文件,java,Java,我已经尝试了一段时间,但我似乎无法解决这个问题 我应该从Java文件中提取类,并在IDE中以图形UML图的形式打印或在文件上书写 e、 g该计划 public class Complex { private int re; private int im; public Complex(int re, int im) { this.re = re; this.im = im; } public Complex add(C

我已经尝试了一段时间,但我似乎无法解决这个问题

我应该从Java文件中提取类,并在IDE中以图形UML图的形式打印或在文件上书写

e、 g该计划

 public class Complex {
    private int re;
    private int im;

    public Complex(int re, int im) {
        this.re = re;
        this.im = im;
    }

    public Complex add(Complex h) {
        return new Complex(this.re + h.re, this.im + h.im);
    }

    public Complex sub(Complex h) {
        return new Complex(this.re - h.re, this.im - h.im);
    }

    public Complex mul(Complex h) {
        int a = re;
        int b = im;
        int c = h.re;
        int d = h.im;
        return new Complex(a * c - b * d, b * c + a * d);
    }

    public Complex div(Complex h) {
        int a = re;
        int b = im;
        int c = h.re;
        int d = h.im;
        return new Complex((a * c + b * d) / (c * c + d * d), (b * c - a * d)
                / (c * c + d * d));
    }

    public String toString() {
        if (im >= 0) {
            return re + " + " + im + "i";
        } else
            return re + "  " + im + "i";
    }
}
应该生成如下内容:

a Complex
b  int re
b  int re
a  Complex(re:int, im:int)
a  add():Complex
a  sub():Complex
a  mul():Complex
a  div():Complex
a  toString():String
a main()
public Complex int re, int im
public Complex add Complex h
public Complex sub Complex h
我已经开始从文件中去掉第一个括号

import java.io.*;

public class ClassExtract {

    public static void main(String[] args) {

        ClassExtract obj = new ClassExtract();
        obj.removeBracket("Complexx.txt");
    }

    public void removeBracket(String filnamn) {

        try {
            File f = new File(filnamn);
            FileReader fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);

            FileWriter fw = new FileWriter("noparanthesis_" + filnamn);
            BufferedWriter bw = new BufferedWriter(fw);

            String rad = br.readLine();
            while (rad != null) {
                rad = rad.replaceAll("\\(", " ");
                bw.write(rad);
                bw.newLine();
                rad = br.readLine();
            }

            bw.close();
            br.close();

        } catch (FileNotFoundException e) {
            System.out.printf("The file " + filnamn + " was not found.");
        } catch (IOException e) {
            System.out.printf("Writing error.");
        }
    }
}
我想到了处理这个问题的不同方法。我认为最简单的方法是在收集了head
public class Complex
之后剥离所有内容,这意味着文件的其余部分看起来像:

a Complex
b  int re
b  int re
a  Complex(re:int, im:int)
a  add():Complex
a  sub():Complex
a  mul():Complex
a  div():Complex
a  toString():String
a main()
public Complex int re, int im
public Complex add Complex h
public Complex sub Complex h
以此类推,读取行的索引


事实上,我感到非常失落,我很难解决这个问题,任何帮助都将不胜感激。

正如Qwe在评论中所说,您最好看看Java

这些允许您检查类并列出其方法、超类、接口等


通过使用正则表达式/文本分析解决这个问题,您基本上是在尝试编写一个部分Java解析器,这是完全不必要的痛苦

您需要解析java吗?或者你能用类加载器加载编译后的类并使用反射吗?是的,我必须读取一个.java文件并用结果生成一个.txt文件,或者直接将其放在IDE控制台中@Qwe我现在正在阅读关于反射的文章,它似乎很方便,因为它可以获得类或类似的东西-但是一个小的具体例子可以帮助很多你认为我可以如何实现它。不太清楚你的意思,关键是Java将处理所有的文本细节,只提供您需要的高级类关系和方法签名。例如,即使.java的格式很奇怪!是的,别提那个评论,我想我错了。类aClass=MyObject.Class构造函数[]构造函数=aClass.getConstructors();我有点困惑,有人吗?我目前正在这个网站上试验反射能力:但我似乎无法获得正确的方法参数和正确的输出。