5

我们正在创建一些 WCF 服务,这些服务最初将由 .NET 客户端使用,但未来将由 Java 客户端使用。

因此,我们希望避免在接口中使用 Java 不支持的任何数据类型。

我们所知道的具体一种是可为空的值类型。

一个建议是,我们可以通过使用字符串来表示(例如,可为空的 int)来支持这些。因此,空字符串表示 null,否则要求字符串必须可解析为 int。

谁能推荐一个更好的选择,或者这就是你会做的?

4

2 回答 2

5

希望,如果您可以通过 WCF 公开一个可为空的整数,那么从 Java 中消耗的任何东西都将使用包装器类型——Integer而不是intByte而不是byte等。当然,这些是引用类型,而 .NET 中的可空值类型仍然是值类型,因此您将获得更大的 GC 压力,并且通常效率会降低,但是鉴于 Java 不支持用户定义的值类型,您对此无能为力。

于 2009-07-24T08:03:37.203 回答
3

几年前我参与的一个项目(也是 .NET/Java 组合)中使用的一种方法是添加指标属性:NumPropertyNumPropertyIsNull. 它不是特别漂亮,但它确实有效。

作为一个侧面节点,我认为最终我们无法找到一个商业案例,其中的区别0null实际很重要。

于 2009-07-24T08:06:54.717 回答