Depuis Java8, il est possible d'obtenir le nom du paramètre de la méthode incluant le constructeur de la classe par réflexion. En compilant avec l'option -parameters
ajoutée à javac
, les informations requises pour cela seront stockées dans le fichier de classe.
Dans Eclipse, par exemple, dans le cas d'un projet Java, vous pouvez créer un jar correspondant en vérifiant et en exportant les éléments suivants dans les paramètres communs à tous les projets ou pour chaque projet. Peut-être en cochant, l'option -parameters
est définie en interne et compilée.
C'est simple, mais vous pouvez vérifier le nom du paramètre en utilisant la réflexion de la référence vers le constructeur ou l'objet de méthode comme suit.
for (Constructor<?> constructor : clazz.getDeclaredConstructors()) {
System.out.println("constructor: " + constructor.getName());
for (Parameter param : constructor.getParameters()) {
System.out.println(" param: " + param.getName() + ", type: " + param.getType().getSimpleName());
}
}
for (Method method : clazz.getDeclaredMethods()) {
System.out.println("method: " + method.getName());
for (Parameter param : method.getParameters()) {
System.out.println(" param: " + param.getName() + ", type: " + param.getType().getSimpleName());
}
}
Cependant, dans le cas d'un projet de plug-in, pour une raison quelconque, ce paramètre ne semble pas fonctionner, et dans le jar
(ou bundle) exporté, les noms des paramètres de méthode sont ʻarg0, arg1, arg2…Ce sera. Ces noms sont donnés automatiquement si vous ne spécifiez pas l'option
-parameters. L'IDE Eclipse que vous utilisez est
Version: 2020-06 (4.16.0) Build id: 20200615-1200`. (Peut-être le dernier)
À partir de là, il semble que le projet de plug-in soit en fait compilé sans l'option -paramters
, même si elle est cochée. Si coché, la ligne suivante sera ajoutée au fichier suivant.
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
En exportant dans un projet avec ce paramètre, on s'attend à ce qu'un jar
soit créé dans lequel le nom du paramètre de la méthode peut être obtenu par réflexion.
Dans le cas d'un projet de plug-in, il est utile de créer un MANIFEST.MF
qui montre clairement la dépendance du bundle et de créer facilement un bundle OSGi, mais ce cas était assez gênant.
Par conséquent, une fois créé un projet Java avec la même source que le projet de plug-in, reportez-vous au modèle de MANIFEST.MF
qui a résolu la dépendance de bundle une fois créée dans le projet de plug-in. J'ai décidé de créer un bundle OSGi. (C'est facile)
Ceci est un mémorandum. (Peut-être que quelque chose ne va pas?)
Recommended Posts