我正在尝试访问我的类扩展的嵌套类中的方法。 具体来说就是
getSenderSubID()
中的quickfix.fix42.Message.Header
方法。
public class ExecutionReport extends Message
,Message
的构造函数为:
protected Message(int[] fieldOrder) {
super(fieldOrder);
header = new Header(this);
trailer = new Trailer();
getHeader().setField(new BeginString("FIX.4.2"));
}
嵌套的
Header
类是:
public static class Header extends quickfix.Message.Header {
static final long serialVersionUID = 20050617;
public Header(Message msg) {
// JNI compatibility
}
我想访问的里面的方法是:
public quickfix.field.SenderSubID getSenderSubID() throws FieldNotFound {
return get(new quickfix.field.SenderSubID());
}
对我来说,所有这些看起来我应该能够使用这个方法,但很明显我不能。怎么会这样?
我仔细检查了所有类都在
package quickfix.fix42;
中,并且 ExecutionReport
中没有方法覆盖。
(不确定您使用的 FIX 版本;我会说您在本答案中使用的是 FIX44。您可以进行相应调整。)
我认为
getHeader()
返回的是 quickfix.Message.Header
而不是 quickfix.fix44.Message.Header
。只有后者有getSenderSubID()
。
尝试将
quickfix.Message.Header
转换为 quickfix.fix44.Message.Header
。