Java-Extract接口到文件
我已经尝试了一段时间,但我似乎无法解决这个问题 我应该从Java文件中提取类,并在IDE中以图形UML图的形式打印或在文件上书写 e、 g该计划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
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.");
}
}
}
我想到了处理这个问题的不同方法。我认为最简单的方法是在收集了headpublic 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();我有点困惑,有人吗?我目前正在这个网站上试验反射能力:但我似乎无法获得正确的方法参数和正确的输出。