Ich bin etwas neu in Java, also vielleicht missverstehe ich die Anwendungsfälle für Anmerkungen in Java. Mein Problem ist das folgende:Java-Annotation gibt kryptische Klassennamen zurück
Nach dem Kommentieren einer Methode erhalte ich Klassennamen wie $ Proxy31, wenn Sie die Anmerkungen auf der Methode überprüfen. Ich bin neugierig, warum ich Klassennamen für meine Anmerkungen erhalte, die dem ähnlich sind, und was ich tun kann, um dieses Problem zu beheben.
Method m = this.remoteServiceClass.getMethod(rpcRequest.getMethod().getName());
RequiredPermission a = m.getAnnotation(RequiredPermission.class);
Dies gibt eine Null-Anmerkung, obwohl ich weiß, dass das Verfahren es schaut oben hat die RequiredPermission Anmerkung implementiert.
for(Annotation a : m.getAnnotations())
{
System.out.println(a.getClass().getName());
}
Dies gibt die $ Proxy31-Klassennamen aus.
Bitte geben Sie ein kurzes, aber vollständiges Programm an, um das Problem zu demonstrieren. Ohne den Code ist es schwer/unmöglich zu wissen, was vor sich geht. –
Die Remote-Klasse hat die Methode oder die RpcRequest-Klasse hat die Annotation implementiert? Hat die Annotation eine Laufzeitbindung und gilt sie für einen Methodentyp? (Sie erhalten keine Fehler, wenn die Annotation selbst nicht korrekt kommentiert wird, die Annotation verschwindet einfach). – Yishai
Die remoteServiceClass hat die Methode, die Annotation hat eine Laufzeit-Retention und einen Zielelementtyp von Methoden. Ich verwende den Namen aus der rpcRequest, um die tatsächliche Methode von der Klasse abzurufen. – bdorry