什么是方法调用的返回类型?

时间:2012-11-12 00:56:54

标签: java distributed distributed-transactions proxy-classes

我在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);

如何检查调用返回的值?(可能有不同类型的结果)

谢谢,阿里安

1 个答案:

答案 0 :(得分:2)

嗯,invoke的静态返回类型自然是Object。如果要确定调用返回的实例的动态类型,可以在其上调用getClass()以获取表示其类型的Class对象。

如果您需要检查其内容,可以使用Class进行进一步反思(请参阅getDeclaredFields()等)。如果对象可能扩展了已知的类或接口,您还可以使用instanceof进行检查,然后进行转换。

哦,不要忘记在调用任何内容之前确保返回的对象不是null