做这件事有什么区别,正确的或最好的代码?
这两个版本的代码都很好用,但我认为这些组件可能有一些我无法理解的有用的东西。
第一:
MarketDataRequest m = new MarketDataRequest();
quickfix.fix50sp2.component.MDReqGrp cmp = new quickfix.fix50sp2.component.MDReqGrp();
quickfix.fix50sp2.MarketDataRequest.NoMDEntryTypes group = new quickfix.fix50sp2.MarketDataRequest.NoMDEntryTypes();
cmp.addGroup(group);
m.set(cmp);第二:
MarketDataRequest m = new MarketDataRequest();
quickfix.fix50sp2.MarketDataRequest.NoMDEntryTypes group = new quickfix.fix50sp2.MarketDataRequest.NoMDEntryTypes();
m.addGroup(group)发布于 2020-03-06 21:47:01
对于你给出的例子来说,这并没有太大的区别。您只需再作一个间接操作,就可以将组件添加到消息中,而不是直接添加重复组。
但是,有些组件不只是包含一个重复组。例如,看看InstrmtMDReqGrp,它包含一些子组件和重复组。
当想要复制字段时,使用组件而不是单个字段/组的优点就会显示出来。然后可以分别使用组件的方法copyFrom(FieldMap fields)或copyTo(FieldMap fields)。这些方法将一次性复制组件的所有字段和组。
示例:
@Test
public void testComponent() throws Exception {
final Instrument instrument = new Instrument();
instrument.set(new Symbol("DELL"));
instrument.set(new CountryOfIssue("USA"));
instrument.set(new SecurityType(SecurityType.COMMON_STOCK));
final quickfix.fix44.NewOrderSingle newOrderSingle = new quickfix.fix44.NewOrderSingle();
newOrderSingle.set(instrument);
final quickfix.fix44.ExecutionReport executionReport = new quickfix.fix44.ExecutionReport();
executionReport.setComponent(newOrderSingle.getInstrument());
System.out.println("NOS: " + newOrderSingle.toString().replace('\001', '|'));
System.out.println("ER: " + executionReport.toString().replace('\001', '|'));
}输出:
NOS: 8=FIX.4.4|9=28|35=D|55=DELL|167=CS|470=USA|10=233|
ER: 8=FIX.4.4|9=28|35=8|55=DELL|167=CS|470=USA|10=221|https://stackoverflow.com/questions/60566507
复制相似问题