我在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);
如何检查调用返回的值?(可能有不同类型的结果)
谢谢,阿里安
答案 0 :(得分:2)
嗯,invoke
的静态返回类型自然是Object
。如果要确定调用返回的实例的动态类型,可以在其上调用getClass()
以获取表示其类型的Class
对象。
如果您需要检查其内容,可以使用Class
进行进一步反思(请参阅getDeclaredFields()
等)。如果对象可能扩展了已知的类或接口,您还可以使用instanceof
进行检查,然后进行转换。
哦,不要忘记在调用任何内容之前确保返回的对象不是null
。