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 回答