私は多少Javaに慣れていないので、おそらく私はJavaのアノテーションのユースケースを誤解しています。私の問題は以下の通りです:Javaアノテーションは暗黙のクラス名を返します
メソッドに注釈を付けた後、メソッドの注釈を検査するときに、$ Proxy31などのクラス名を受け取ります。なぜ私はこれに似たアノテーションのクラス名を受け取っているのか、この問題を解決するために何ができるのか不思議です。
Method m = this.remoteServiceClass.getMethod(rpcRequest.getMethod().getName());
RequiredPermission a = m.getAnnotation(RequiredPermission.class);
これは私がそれを見上げているメソッドが実装RequiredPermission注釈を持っていることを知っているにもかかわらず、ヌル注釈を返します。
for(Annotation a : m.getAnnotations())
{
System.out.println(a.getClass().getName());
}
これは、$ Proxy31クラス名を表示します。
問題を示すために、短くて完全なプログラムを提供してください。コードなしでは、何が起こっているのかを知ることは難しい/不可能です。 –
リモートクラスにメソッドがあるか、rpcRequestクラスに注釈が実装されていますか?アノテーションは実行時の保持を持ち、メソッド型に適用されますか? (アノテーションが正しくアノテートされていない場合は、エラーは発生しません。注釈が欠落するだけです)。 – Yishai
remoteServiceClassにはメソッドがあり、注釈には実行時の保持とメソッドのターゲット要素タイプがあります。私はクラスから実際のメソッドを取得するためにrpcRequestから名前を使用しています。 – bdorry