我们正在创建一些最初由.NET客户端使用的WCF服务,但将来会被Java客户端使用。
因此,我们希望避免在Java不支持的接口中使用任何数据类型。
我们所知道的特定值是可以为空的值类型。
一个建议是我们可以通过使用字符串来表示,例如,可以为空的int来支持这些。因此,空字符串表示null,否则需要将字符串解析为int。
任何人都可以推荐更好的选择,或者这就是你要做的事情吗?
答案 0 :(得分:5)
我希望如果你可以通过WCF公开一个可以为空的整数,那么从Java中消费的东西将使用包装类型 - Integer
而不是int
, Byte
而不是byte
等。当然这些是引用类型,而.NET中的可空值类型仍然是值类型,因此您将获得更多的GC压力并且通常效率较低,但鉴于Java不支持用户定义的值类型,你可以做很多事情。
答案 1 :(得分:3)
几年前我参与的项目(也是.NET / Java组合)中使用的一种方法是添加指标属性:NumProperty
和NumPropertyIsNull
。它不是特别漂亮,但它起作用了。
作为一个副节点,我认为最终我们无法找到一个单独的商业案例,其中0
和null
之间的差异确实很重要。