有a method :
public DimseRSP cfind(String asuid, String cuid, int priority,
Attributes data, String tsuid, int autoCancel) throws IOException,
InterruptedException {
FutureDimseRSP rsp = new FutureDimseRSP(nextMessageID());
rsp.setAutoCancel(autoCancel);
cfind(asuid, cuid, priority, data, tsuid, rsp);
return rsp;
}
我在我的应用程序中调用,例如
DimseRSP rsp = association.cfind(...
然后我就可以使用
rsp.someMethodOfTheDimseRSPClass()
这可行,但我想打电话
rsp.someMethodOfTheFutureDimseRSPClass()
相反,这应该是可能的,因为 rsp
是实际上从 cfind()
返回的 FutureDimseRSP
实例,但是当然我的 IDE 给我一个错误,因为它认为 rsp
只是一个 DimseRSP
。
我该怎么办?我可以以某种方式将 DimseRSP
转换为 FutureDimseRSP
以便它可以工作吗?
最佳答案
如果您担心 rsp
可能并不总是 实例 FutureDimseRSP
,请使用 instanceof
:
if (rsp instanceof FutureDimseRSP) {
((FutureDimseRSP)rsp).someMethodOfTheFutureDimseRSPClass();
}
else {
// handle this...
}
关于Java方法据说返回类的对象但返回子类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49628944/