Frage

Ich möchte ein Tool schreiben, das mit einem kompilierten Code einen Code generiert .class Datei als Eingabe. Insbesondere möchte ich aus dieser Klassendatei lesen:

  • Methoden mit Anmerkungen
  • Methodenparameter mit Anmerkungen

Die Eingabeklassendatei bezieht sich wahrscheinlich auf verschiedene Typen, die sich nicht im Klassenpfad des Tools befinden. Das ist in Ordnung, ich muss nichts mit ihnen anfangen, sondern nur voll qualifizierte Typnamen als Zeichenfolgen lesen. Ich muss einige Informationen aus den Anmerkungen erhalten, aber sie werden sich im Klassenpfad des Tools befinden.

Gibt es eine Bibliothek, die ich für diesen Zweck verwenden kann? Es wäre schön, wenn die API ein bisschen wie die Reflexions -API wäre, aber sie muss es nicht sein.

War es hilfreich?

Lösung

Asm http://asm.ow2.org/ Ermöglicht das Lesen einer Klasse aus einem Datei-/Eingabestream, ohne sie zu laden. Sie können Anmerkungen sehen, die zur Laufzeit nicht geladen sind. Es kann auch verwendet werden, um den Klassen -Byte -Code/Anmerkungen/Anmerkungen/Methoden usw. zu ändern.

Andere Tipps

Das Javap -Tool Mit dem JDK enthalten ist wahrscheinlich schon das, wonach Sie suchen.

Sie müssen sich zwei Dinge ansehen Reflection API und Decompiler

Ich denke, Sie könnten Frühlingsklassen -Scan verwenden.

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
String basePackage = "org/springframework/samples/petclinic";
Set<BeanDefinition> components = provider.findCandidateComponents(basePackage);
for (BeanDefinition component : components) {
    System.out.printf("Component: %s\n", component.getBeanClassName());
}

Für weitere Informationen können Sie den Frühling untersuchen Dokumente

Ich benutze Asm um alle Methoden herauszufinden.

Wenn Sie Zugriff auf das Generieren der .class -Datei haben, dann die Reflexionsapi sollte in der Lage sein zu helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top