1

私はJava(InvocationHandler)でプロキシパターンを使用して、プロキシクラス(を実装するInvocationHandler)でリモートオブジェクトのロックマネージャーを実装しています。私はリモートオブジェクトを呼び出しています(ここでは:) flighRMConnection

if (method.getName().toLowerCase().contains("query")){
    lm.Lock(Thread.currentThread(), READ);
} else {
    lm.Lock(Thread.currentThread(), WRITE)
}               
method.invoke(flightRMConnection, args);

呼び出しによって返された値を確認するにはどうすればよいですか?(結果の種類が異なる場合があります)

ありがとう、アリアン

4

1 に答える 1

2

さて、 の静的戻り値の型invokeは当然Objectです。呼び出しによって返されたインスタンスの動的な型を特定したい場合は、それを呼び出して、その型を表すオブジェクトgetClass()を取得できます。Class

その内容を検査する必要がある場合は、 を使用してさらに反映させることができますClass( などを参照getDeclaredFields())。オブジェクトが拡張する可能性のある既知のクラスまたはインターフェイスがある場合は、instanceofそれを確認してからキャストすることもできます。

nullああ、何かを呼び出す前に、返されたオブジェクトがそうでないことを確認することを忘れないでください。

于 2012-11-12T01:08:15.800 に答える