Beim Schreiben eines Programmdesigndokuments - oder besser gesagt, hatte ich die Möglichkeit, ein Programmdesigndokument aus dem Quellcode zu erstellen, aber das Designdokument "schreibt alle übergeordneten Klassennamen und alle in der erstellten Java-Klasse implementierten Schnittstellen zusammen. Es war so etwas wie. Es ist mühsam, dies von Hand töricht ehrlich zu machen. Deshalb habe ich beschlossen, ein Programm mit dem Namen __ "Rekursiv die übergeordnete Klasse und Schnittstelle aus dem Klassennamen suchen" __ zu schreiben. Unten finden Sie ein Beispiel dafür.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws ClassNotFoundException {
//Erstellen Sie ein Klassenobjekt aus dem Klassennamen.
Class<?> pivotClass = Class.forName("java.util.ArrayList");
//Folgen Sie der Oberklasse rekursiv.
List<Class<?>> classes = new ArrayList<>();
Class<?> superClass = pivotClass;
while (superClass != null) {
classes.add(superClass);
superClass = superClass.getSuperclass();
}
//Holen Sie sich eine Liste der rekursiv erworbenen Superklassen.
for (Class<?> clazz : classes) {
System.out.println(clazz.getName());
}
/* java.util.ArrayList
java.util.AbstractList
java.util.AbstractCollection
java.lang.Object */
//Holen Sie sich eine Liste der implementierten Schnittstellen&Ausgabe.
Class<?>[] interfaces = pivotClass.getInterfaces();
for (Class<?> interfaze : interfaces) {
System.out.println(interfaze.getName());
}
/* java.util.List
java.util.RandomAccess
java.lang.Cloneable
java.io.Serializable */
}
}
Es ist ein wenig seltsam, dass die Klasse selbst als Klasse behandelt werden kann, aber es ist nützlich, wenn Sie sich erst einmal daran gewöhnt haben. Es lebe die Metaprogrammierung (´ ・ ω ・ `)
Recommended Posts