Я пытался и пытаюсь какое-то время с этим, и я просто не могу его решить.Java - Extract Interface to File
Я должен извлечь классы из Java-файлов и печати в форме UML-диаграммы, в IDE или записи на файл
например программа
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()
Я начал с снятия первой скобки из файла;
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.");
}
}
}
Я думал о различных способах решения этой проблемы. Так, что я думаю, что было бы проще всего было бы лишить все после того, как собрали голову public class Complex
, что означало бы оставшуюся часть файла будет выглядеть примерно так:
public Complex int re, int im
public Complex add Complex h
public Complex sub Complex h
и т.д., и сделать то же самое и прочитать индекс линий.
Я действительно чувствую себя очень потерянным, и мне трудно решить эту проблему, любая помощь будет действительно оценена.
почему бы не использовать отражение? –
Вам нужно разобрать java? или вы можете загрузить скомпилированный класс с загрузчиком классов и использовать отражение? – stew
Да, я должен прочитать .java-файл и сделать .txt-файл с результатом или получить его прямо в моей консоли IDE. @Qwe Теперь я читаю о отражении, кажется, что это может быть удобно, так как оно получает классы или такие, но небольшой конкретный пример может помочь вам в том, как вы думаете, что я мог бы его реализовать. – Dannzor