Y compris les classes Java et les exécuter lors de l'exécution
-
22-08-2019 - |
Question
J'ai un projet Java qui a besoin d'une interface "addon". Je pensais à charger une sorte de fichiers de classe ayant des méthodes par défaut comme initialize()
et shutdown()
qui sera appelée après la classe a été chargée dans l'application. Est-ce la façon de le faire? Comment pourrais-je aborder ce problème?
La solution
Jetez un oeil à la classe classe, en particulier le
Autres conseils
D'abord, vous aurez besoin d'un ClassLoader
; vous pouvez obtenir l'actuel avec getClass().getClassLoader()
, mais vos classes addon devez être dans le classpath. Vous aurez probablement envie de créer un classloader personnalisé qui recherche votre répertoire addon.
Une fois que vous avez le ClassLoader
, vous pouvez l'utiliser pour charger une classe. Cela vous donne un objet Class
; vous pouvez alors utiliser la réflexion pour appeler la méthode initialize()
si elle est présente.
Si vous regardez quelque chose de plus sophistiqué, vous pouvez essayer: http://jpf.sourceforge.net .
... JPF prévoit un moteur d'exécution qui découvre dynamiquement et charges « plug-ins » plug-in .Un est un élément structuré qui se décrit à l'aide d'un JPF « manifeste ». ...
Une autre façon agréable de réaliser Addons est java. util.Serviceloader . Jetez un oeil sur les javadocs, ils expliquent le principe.
public class SomeClass {
static {
System.out.println("Being called with the class is loaded");
initialize();
}
static void initialize(){}
}
Est-ce que votre question?