问题描述
我有一个使用 na Excel 文件创建的动态域类,以下每个值都返回一个字符串。值“MANUAL”具有标签“Manual”。 SegmentationResult 类位于 odm.dynamic 包中,如下所示:
现在我在一个类 odm.Response 中定义了一个虚拟方法 isValuedRight,我需要在 BOM 到 XOM 的映射中使用这些值,如下所示:
问题是我无法导入/使用这些值。我也尝试使用这些值:
return vysledekSegmentace != odm.dynamic.SegmentationResult.MANUAL
解决方法
问题在于 BOM 到 XOM 的映射是位于 XOM 之上的层,这意味着它不能使用虚拟类和方法。
,虚拟 BOM 成员(例如动态域类和值)在其他虚拟 BOM 成员的 B2X 代码中不可见。这可能是使用动态域的最大缺点,否则它非常有用。
但是,虚拟 BOM 成员在 BOM 功能中可用。 B2X 可以调用 BOM 函数。因此,您可能能够间接获得所需的行为。 BOM 函数不是面向对象的,它们的使用不是很广泛,我通常会避免使用它们,但它们在某些情况下很有用。
另一种选择是在 XOM 中定义 Java 枚举并使用“扩展器”类来扩充 BOM 类并提供底层 String 属性和强类型枚举属性之间的转换。不像使用动态域那么容易,但定义的值在整个 BOM 和 XOM 中都可用。