gpt4 book ai didi

java - 具有不同修复版本的 Quickfix 重复代码

转载 作者:行者123 更新时间:2023-11-30 11:45:31 24 4
gpt4 key购买 nike

我正在编写一些处理许多不同修复版本(4.2、4.3、4.4)的代码。我遇到的问题是,在编写处理程序对象时,我被迫复制代码,因为每个修复版本都将使用不同的处理程序。例如

@Handler    
public void executionHandler(quickfix.fix42.ExecutionReport execution, SessionID sessionID) {
System.out.println(execution.getClOrdID().getValue());
}

@Handler
public void executionHandler(quickfix.fix43.ExecutionReport execution, SessionID sessionID) {
System.out.println(execution.getClOrdID().getValue());
}

我编写的实际代码要复杂得多(我正在检索多个字段并处理数据)。我想不出如何在不诉诸反射(reflection)的情况下减少这种重复。

最佳答案

具有讽刺意味的是,一些使 QuickFIX/J 使用起来更容易和更安全的功能也会在您描述的情况下造成困难。处理程序方法和生成的消息类旨在支持类型安全,但实际上您需要更少的类型安全和更多的动态字段访问。生成的类是 quickfix.Message 的子类,它是 quickfix.FieldMap 的子类。 FieldMap 类具有用于获取字段数据的公共(public)访问器。类型安全消息包装器使用这些来获取消息数据。

例如,

double averagePrice = message.getDouble(AvgPx.FIELD);

这适用于包含该字段的任何消息。所有生成的字段都有一个带标签号的 FIELD 静态成员。 quickfix.MsgType 类还有消息类型的常量,可用于消息的自定义动态调度。

如果您正在访问 MsgType 等消息头字段,请记住通过 message.getHeader() 方法访问这些字段。

这是一个额外的提示。如果您不需要或不需要类型安全的消息包装器,您可以定义一个简单的自定义 quickfix.MessageFactory,它只会创建基本的 quickfix.Message 对象。这会在处理传入消息时带来小幅性能提升。

关于java - 具有不同修复版本的 Quickfix 重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com