Ich glaube nicht, dass es eine Methode gibt, um lokale Klassen zu finden (Klassen innerhalb einer Methode).
Sie könnten versuchen, alle Klassen in der package und verwende dann getEnclosingClass (das Gegenteil von dem, was du suchst), um sie zu filtern.
In Java gibt es keine allgemeinen Methoden zum Auflisten von Klassen nach Entwurf. Dies liegt daran, dass Klassen von überall geladen oder dynamisch erstellt werden können. Das Speichern von Klassendateien in einer JAR oder einem Verzeichnis ist nur einer von möglichen Klassenladeprogrammen.
Obwohl es vernünftiger wäre anzunehmen, dass eingeschlossene Klassen eine bekannte, aufzählbare Menge sind, ist es nicht sinnvoll, eine Methode anzugeben, die nur in diesem speziellen Fall funktioniert.
Wenn Sie den häufigen Fall von URLClassLoader
annehmen, können Sie die zugrunde liegenden URLs als Dateisysteme behandeln und deren Inhalt aufzählen. Dies kann angebracht sein, wenn Sie ein Tool erstellen, um etwas mit dem Code von Drittanbietern zu tun, und es wurde sogar für viele Java EE-Standards übernommen (irrtümlich, ich fühle).
Wenn Sie einen Plug-in-Mechanismus erstellen, stellen Sie Metadaten in einem Brunnen bereit -bekannter Standort ist effizienter, zuverlässiger und funktioniert mit jedem gültigen Klassenlader.
Ich habe Klasse mit Reflektion wie folgt deklariert:
%Vor% aber mein Programm kann getDeclaredClasses()
nicht finden.
Dies ist eine Möglichkeit, die innere Klasse in eine Methode zu übernehmen.
%Vor%In Java gibt es keine allgemeinen Methoden zum Auflisten von Klassen nach Entwurf. Dies liegt daran, dass Klassen von überall geladen oder dynamisch erstellt werden können. Das Speichern von Klassendateien in einer JAR oder einem Verzeichnis ist nur einer von möglichen Klassenladeprogrammen.
Obwohl es vernünftiger wäre anzunehmen, dass eingeschlossene Klassen eine bekannte, aufzählbare Menge sind, ist es nicht sinnvoll, eine Methode anzugeben, die nur in diesem speziellen Fall funktioniert.
Wenn Sie den häufigen Fall von Class
annehmen, können Sie die zugrunde liegenden URLs als Dateisysteme behandeln und deren Inhalt aufzählen. Dies kann angebracht sein, wenn Sie ein Tool erstellen, um etwas mit dem Code von Drittanbietern zu tun, und es wurde sogar für viele Java EE-Standards übernommen (irrtümlich, ich fühle).
Wenn Sie einen Plug-in-Mechanismus erstellen, stellen Sie Metadaten in einem Brunnen bereit -bekannter Standort ist effizienter, zuverlässiger und funktioniert mit jedem gültigen Klassenlader.
Die Methode cls
kehrt zurück (aus dem Javadoc ) -
ein Array von Klassenobjekten, die alle Klassen und Schnittstellen widerspiegeln als Mitglieder der Klasse deklariert, die durch dieses Klassenobjekt repräsentiert wird. Dazu gehören public, protected, standard (package) access und private Klassen und Schnittstellen, die von der Klasse deklariert werden, schließt jedoch geerbt aus Klassen und Schnittstellen.
Es scheint also, dass es keine innere Klasse zurückgibt, die Sie deklariert haben. Deshalb erhalten Sie nichts in der Anordnung von %code% %code% .
Ich glaube nicht, dass es eine Methode gibt, um lokale Klassen zu finden (Klassen innerhalb einer Methode).
Sie könnten versuchen, alle Klassen in der package und verwende dann getEnclosingClass (das Gegenteil von dem, was du suchst), um sie zu filtern.
Tags und Links java class reflection oop local-class