Hallo zusammen. Ich habe eine Aufgabe bekommen, um einen kleinen Decompiler selber programmieren zu müssen.
Meine getClassInfo()-Methode hat ein Darstellungsprobleme. Zwar zeigt sie im Console so aus beim Starten:
Im Console sollte es so aussehen
Und hier ist mein Decompiler-Code der den Klassenkopf abliest und den Output generiert
Ich habe viel ausprobiert getName(), getClass() usw aber konnte nicht bisher den Klassenkopf nicht anzeigen lassen. Vielleicht kann jemand mir eine Hilfsstellung geben?
Meine getClassInfo()-Methode hat ein Darstellungsprobleme. Zwar zeigt sie im Console so aus beim Starten:
Java:
//der Zweck meines Decompilers ist, also, zu decompilieren.
//hier wird es noch nicht ganz richtig decompiliert
public abstract class AnotherClass extends AnotherClassBase implements java.io.Serializable, java.lang.Comparable<J_Decompiler.AnotherClass> {
//...
}
Im Console sollte es so aussehen
Code:
//die unnötige Schlüsselworten java.io., java.lang., J_Decompiler. sollten weg
public abstract class AnotherClass extends AnotherClassBase implements Serializable, Comparable<AnotherClass> {
}
Und hier ist mein Decompiler-Code der den Klassenkopf abliest und den Output generiert
Code:
private String getClassInfo(){
StringBuilder sb = new StringBuilder();
sb.append(Modifier.toString(clazz.getModifiers())).append(" ");
sb.append(clazz.isInterface() ? "interface" : "class").append(" ");
sb.append(clazz.getSimpleName());
Type[] extend = new Type[]{clazz.getGenericSuperclass()};
if(extend.length > 0){
sb.append(" extends ");
for(int i = 0; i < extend.length; i++){
sb.append(clazz.getSuperclass().getSimpleName());
if(i < extend.length-1){
sb.append(", ");
}
}
}
Type[] interfaces = clazz.getGenericInterfaces();
if(interfaces.length > 0){
sb.append(" implements ");
for(int i = 0; i < interfaces.length; i++){
//bei getTypeName(). wird unnötige Kram wie z.B. java.io im Konsole angezeigt
//welche Methode() sind stattdessen richtig?
sb.append(interfaces[i].getTypeName());
if(i < interfaces.length-1){
sb.append(", ");
}
}
}
return sb.toString();
}
Ich habe viel ausprobiert getName(), getClass() usw aber konnte nicht bisher den Klassenkopf nicht anzeigen lassen. Vielleicht kann jemand mir eine Hilfsstellung geben?