这个错误发生在QuickFIX/J中,因为'HaltReason'是一个自定义的枚举类型,而IntField是一个包装int类型的QuickFIX/J类型。因此,尝试将'HaltReason'赋值给IntField会导致类型不匹配的编译错误。
要解决这个问题,需要创建一个自定义的字段类型来包装'HaltReason'类型。下面是一个示例:
public class HaltReasonField extends IntField {
public static final int FIELD = X; // 请用您的字段ID替换X
public HaltReasonField() {
super(FIELD, 0);
}
public HaltReasonField(int value) {
super(FIELD, value);
}
public HaltReasonField(HaltReason value) {
super(FIELD, value.getCode());
}
public void setValue(HaltReason value) {
setValue(value.getCode());
}
public HaltReason getValue() {
return HaltReason.fromCode(getValue());
}
}
在这个示例中,我们创建一个名为'HaltReasonField'的自定义字段类型,它继承了QuickFIX/J中的IntField类型。在构造函数中,我们将字段ID设置为我们特定的字段ID,然后使用HaltReason类型的值来初始化IntField值。
我们还添加了一个setValue(HaltReason value)方法,它接受一个HaltReason类型的参数并将其转换为对应的整数代码,然后将其设置为字段的值。同样,我们添加了一个getValue()方法来返回HaltReason类型的值。
有了这个自定义字段类型,您可以使用'HaltReasonField'类型的对象来安全地表示'HaltReason'类型的值,而不会遇到类型不匹配的编译错误。
上一篇:编译错误:“operator'&&'cannotbeappliedto'int','int'
下一篇:编译错误:“RCTBundleURLProvider没有可见的@interface声明选择器'jsBundleURLForBundleRoot:fallbackResource:'”