Java可消耗服务的.NET可空值类型的最佳替代方案

时间:2009-07-24 07:59:17

标签: java .net wcf nullable

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

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

我们所知道的特定值是可以为空的值类型。

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

任何人都可以推荐更好的选择,或者这就是你要做的事情吗?

2 个答案:

答案 0 :(得分:5)

希望如果你可以通过WCF公开一个可以为空的整数,那么从Java中消费的东西将使用包装类型 - Integer而不是intByte而不是byte等。当然这些是引用类型,而.NET中的可空值类型仍然是值类型,因此您将获得更多的GC压力并且通常效率较低,但鉴于Java不支持用户定义的值类型,你可以做很多事情。

答案 1 :(得分:3)

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

作为一个副节点,我认为最终我们无法找到一个单独的商业案例,其中0null之间的差异确实很重要。