Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008
-
13 juin 2008 à 10:27
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008
-
16 juin 2008 à 10:18
Bonjour à tous , je me pose une petite question a propos d'un programme que je concois actuellement, et dans lequel j'utilise des annotations.
Voici mon programme :
Une classe pour definir mon annotation :
/**
* @param args
*/
public static void main(String[] args)
{
// nouveau plot
annotationTest.Plot p= new annotationTest.Plot();
System.out.println("List von Plot Klasse Annotation");
System.out.println();
// pour chaque variable de Plot
for(Field m : p.getClass().getDeclaredFields())
{
// afficher le nom de la variable
System.out.println("\t "+m.getName());
try{
// recuperer l'annotation du type MyAnnotation sur cette variable
Annotation a = m.getAnnotation(MyAnnotation.class);
// Pour chaque methode de cette annotation
for(Method param : a.annotationType().getDeclaredMethods() )
{
// afficher le type de retour, le nom de la methode et sa valeur après execution
System.out.println("\t\t "+param.getReturnType().getSimpleName()+" "+param.getName()+" "+param.invoke(a));
}
System.out.println();
Ma question est la suivante : dans mon annotation, je declare un maximum en double par exemple, mais il s'applique sur une variable de type int. Existerait-il un moyen de detecter le type de la variable sur lequel s'applique l'annotation et d'utiliser ce type pour maximum, minimum et increment ? Si cela n'existe pas je pense me tourner vers la solution de créer une annotation pour chaque type de variable (int, double ...) mais ca m'interesse beaucoup de savoir si c'est eventuellement possible ^^
( Et sinon pas besoin de commentaires du type "Pourquoi passer par des annotations, ca serait plus simple de telle maniere ...", je n'ai pas choix )
Merci beaucoup
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 13 juin 2008 à 11:21
En fait c'est un peu compliqué, dans la declaration de mon plot j'utilise une annotation, et je voudrais que dans la declaration de cette annotation soit pris en compte le type de la variable de plot a laquelle elle est affectée.
Sachant qu'en plus une annotation est une interface, donc on ne peut pas implementer de code dedans ...
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 13 juin 2008 à 11:52
En fait j'aimerais que le type de retour de certaines methodes de mon annotation change suivant l'objet annoté.
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 13 juin 2008 à 12:01
Je viens de regarder vie fait en essayant de mettre comme type de retour
java.lang.Number
ou
java.io.Serializable
et voici l'erreur : "Invalid type Serializable for the annotation attribute MyAnnotation.minimum; only primitive type,
String, Class, annotation, enumeration are permitted or 1-dimensional arrays thereof" qui provient du fait que les öethods d'une annotation n'ont le droit qu'à certains types de valeur retournée
~~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 13 juin 2008 à 13:28
Ok merci d'avoir essayé ^^ En fait j'avais déjà pensé à un type que les autres types possibles implementeraient (donc Number semblait bien) mais y'a trop de contrainte sur les annotations, faut que le type soit un type primitif, ou une enumeration de valeur de type primitif, ou un tableau de valeur de type primitif. Et sinon Serializable est une interface implémentée par tous, c'est pouquoi j'avais essayé de l'utiliser pour tester ;)
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
Liverion
Messages postés296Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention18 août 2008 16 juin 2008 à 10:18
Ptite relance du sujet après le Week End, des fois que d'autres aient des idées ^^
~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!