In C# können Sie ganz einfach alle Klassen aus einer bestimmten Assembly lesen.
Ich suche nach einer entsprechenden Funktion in Java. Ich brauche dies, um EJB Beans automatisch an mein Guice Modul zu binden.
In C# können Sie ganz einfach alle Klassen aus einer bestimmten Assembly lesen.
Ich suche nach einer entsprechenden Funktion in Java. Ich brauche dies, um EJB Beans automatisch an mein Guice Modul zu binden.
Leider scheint es in Java keine gebrauchsfertige Lösung zu geben.
In unserem Projekt haben wir einen leicht modifizierten Ansatz verwendet, der von irgendein Blog . Die dort beschriebene Lösung besteht darin, das Dateisystem und die JARs nach Klassen zu durchsuchen.
Wenn Sie nur Klassen auswählen möchten, die eine bestimmte Schnittstelle implementieren, können Sie eine zusätzliche Prüfung durchführen, z. B. clazz.isAssignableFrom(MyInterface.class)
.
Das Java-Äquivalent einer Assembly ist eine JAR-Datei; der Inhalt einer JAR-Datei kann durch die Verwendung der Klassen in java.util.jar
.
Es gibt keinen allgemeineren Mechanismus (wie z.B. alle Klassen in einem Paket zu erhalten), da der Java-Klassenlademechanismus sehr flexibel ist und Dinge wie über HTTP geladene oder on the fly generierte Klassen zulässt, so dass es unmöglich ist, alle verfügbaren Klassen zu kennen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.