Les paramétres annotés d'une méthodes
amani
-
amani -
amani -
Bonjour,
comment récupérer les paramètres annotés d'une méthode en : je veux appeler les paramètres annotés des méthodes existantes dans une classe et les afficher.
for (Method m : TestClass.class.getMethods()) {
if (m.isAnnotationPresent(TestClass.annoteMe.class)) {
TestClass.annoteMe a = m.getAnnotation(TestClass.annoteMe.class);
String k = a.name();
system.out.println(a);
}
}
Cette boucle a pour rôle de chercher toutes les méthodes annotés dans la classe "TestClass" afficher leurs noms. Je vais faire une boucle analogue mais au lieu de chercher les méthodes annotés je veux retourner les paramètres annotés.
comment récupérer les paramètres annotés d'une méthode en : je veux appeler les paramètres annotés des méthodes existantes dans une classe et les afficher.
for (Method m : TestClass.class.getMethods()) {
if (m.isAnnotationPresent(TestClass.annoteMe.class)) {
TestClass.annoteMe a = m.getAnnotation(TestClass.annoteMe.class);
String k = a.name();
system.out.println(a);
}
}
Cette boucle a pour rôle de chercher toutes les méthodes annotés dans la classe "TestClass" afficher leurs noms. Je vais faire une boucle analogue mais au lieu de chercher les méthodes annotés je veux retourner les paramètres annotés.
A voir également:
- Les paramétres annotés d'une méthodes
- Parametres de mon ordinateur - Guide
- Paramètres dns - Guide
- Leboncoin paramètres - Guide
- Paramètres luminosité - Guide
- Paramètres s'arrête systématiquement - Forum Samsung
1 réponse
Le problème c'est que ce tu appelles "paramètres annotés" sont en fait des méthodes.
Or ce n'est pas la seule méthode de l'annotation puisqu'elle va hériter d'Object et Proxy...
Mais tu peux toujours t'arranger pour faire le tri et affiner la recherche :
@interface Val
{
double val(); // Méthode !!
}
Or ce n'est pas la seule méthode de l'annotation puisqu'elle va hériter d'Object et Proxy...
Mais tu peux toujours t'arranger pour faire le tri et affiner la recherche :
for (Method m : Test.class.getMethods()) for (Annotation a : m.getAnnotations()) for (Method x : a.getClass().getMethods()) System.out.println(x.toGenericString());
par exemple:
@annoteMe(name = "annotationDeLaMethode")
public String Methode(
@paramAnnotation(paramName="param1")
String param
) {
return "return value";
}
j'ai bien définie mes deux annotations( de la méthodes:annoteMe et du paramètres:paramAnnotation) maintenant je veux parcourir les méthodes annotés ensuite leurs paramètres annotés et les affiché.
import java.lang.annotation.*; import java.lang.reflect.Method; public class Test { @Retention(value=RetentionPolicy.RUNTIME) @Target(value=ElementType.METHOD) @interface Val { double val(); } @Val(val=42) public void test() { } public static double getTestVal() { try { Annotation a = Test.class.getMethod("test").getAnnotation(Val.class); Method m = a.getClass().getMethod("val"); return (Double) m.invoke(a); } catch (Exception e) { e.printStackTrace(); return Double.NaN; } } public static void main(String...Args) { System.out.println(Test.getTestVal()); } }@annoteMe(name = "annotationDeLaMethode")
public String Methode(
@paramAnnotation(paramName="param1")
String param
) {
return "return value";
}
ici je m'intéresse aux paramètres annotés.
import java.lang.annotation.*; import java.lang.reflect.Method; public class Test { @Retention(value=RetentionPolicy.RUNTIME) @Target(value=ElementType.METHOD) @interface MethodVal { double val(); } @Retention(value=RetentionPolicy.RUNTIME) @Target(value=ElementType.PARAMETER) @interface ParameterVal { double val(); } @MethodVal(val=42) public void test(@ParameterVal(val=13) Double x) { } public static double getTestVal() { try { Annotation a = Test.class.getMethod("test",Double.class).getParameterAnnotations()[0][0]; Method m = a.getClass().getMethod("val"); return (Double) m.invoke(a); } catch (Exception e) { e.printStackTrace(); return Double.NaN; } } public static void main(String...Args) { System.out.println(Test.getTestVal()); } }