En écrivant un document de conception de programme - ou plutôt, j'ai eu l'occasion de créer un document de conception de programme à partir du code source, mais le document de conception "écrit tous les noms de classe parent et toutes les interfaces implémentées dans la classe Java créée ensemble. C'était quelque chose comme ça. Il est difficile de faire cela à la main avec une honnêteté stupide. J'ai donc décidé d'écrire un programme appelé __ "Trouver récursivement la classe parent et l'interface à partir du nom de la classe" __. Vous en trouverez ci-dessous un exemple.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws ClassNotFoundException {
//Créez un objet de classe à partir du nom de la classe.
Class<?> pivotClass = Class.forName("java.util.ArrayList");
//Suivez la superclasse de manière récursive.
List<Class<?>> classes = new ArrayList<>();
Class<?> superClass = pivotClass;
while (superClass != null) {
classes.add(superClass);
superClass = superClass.getSuperclass();
}
//Obtenez une liste des superclasses acquises récursivement.
for (Class<?> clazz : classes) {
System.out.println(clazz.getName());
}
/* java.util.ArrayList
java.util.AbstractList
java.util.AbstractCollection
java.lang.Object */
//Obtenez une liste des interfaces implémentées&Production.
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 */
}
}
C'est un peu étrange que la classe elle-même puisse être traitée comme une classe, mais c'est utile une fois que vous vous y êtes habitué. Vive la méta-programmation (´ ・ ω ・ `)
Recommended Posts