Je suis un peu nouveau sur Java, alors peut-être que je me méprends sur les cas d'utilisation des annotations dans Java. Mon problème est le suivant:L'annotation Java renvoie des noms de classe cryptiques
Après l'annotation d'une méthode, je reçois des noms de classe tels que $ Proxy31 lors de l'inspection des annotations sur la méthode. Je suis curieux de savoir pourquoi je reçois des noms de classe pour mes annotations qui sont similaires à ceci, et ce que je peux faire pour résoudre ce problème.
Method m = this.remoteServiceClass.getMethod(rpcRequest.getMethod().getName());
RequiredPermission a = m.getAnnotation(RequiredPermission.class);
Cela renvoie une annotation nulle, même si je sais que la méthode, il est à la recherche a l'annotation RequiredPermission mis en œuvre.
for(Annotation a : m.getAnnotations())
{
System.out.println(a.getClass().getName());
}
Ceci imprime les noms de classe $ Proxy31.
Veuillez fournir un programme court mais complet pour démontrer le problème. Sans le code, il est difficile/impossible de savoir ce qui se passe. –
La classe distante a la méthode, ou la classe rpcRequest a-t-elle implémenté l'annotation? L'annotation a-t-elle une rétention d'exécution et s'applique-t-elle à un type de méthode? (Vous n'obtiendrez pas d'erreurs si l'annotation n'est pas elle-même annotée correctement, l'annotation est simplement manquante). – Yishai
remoteServiceClass possède la méthode, l'annotation a la rétention de l'exécution et un type d'élément cible de méthodes. J'utilise le nom de la rpcRequest pour récupérer la méthode réelle de la classe. – bdorry