在Java-Flex远程处理应用程序中处理可空整数的最佳实践?

在Java-Flex远程处理应用程序中处理可空整数的最佳实践?,java,apache-flex,blazeds,amf,Java,Apache Flex,Blazeds,Amf,我有一个由Java服务器部分和Flash/Flex客户端组成的应用程序,两者都通过BlazeDS进行通信。为了在两个站点上拥有相同类型的对象,我使用GAS3代码生成器(由flex-mojos使用) 但是现在我面临着处理可为空整数的问题。问题是我有一个对象(A),其中包含一个外键ID,它引用了一个可选对象B。但是我只将ID发送给flex客户端 在Java站点上,这很容易: class A { private Integer bFk; getter/setter } 但是在flex客户端,

我有一个由Java服务器部分和Flash/Flex客户端组成的应用程序,两者都通过BlazeDS进行通信。为了在两个站点上拥有相同类型的对象,我使用GAS3代码生成器(由flex-mojos使用)

但是现在我面临着处理可为空整数的问题。问题是我有一个对象(A),其中包含一个外键ID,它引用了一个可选对象B。但是我只将ID发送给flex客户端

在Java站点上,这很容易:

class A {
  private Integer bFk;
  getter/setter
}
但是在flex客户端,bFk的类型是int。Flash int不能为null。所以 远程处理机制将Java空整数转换为0。将其发送回服务器后,即使在Java端,Java bFk也变为0这是不可接受的,因为我需要将0和null分开。

我的第一个解决方法不是在Java端使用整数,而是使用一个新的类NullAbleID,它的工作方式有点像包装器/适配器,它包装了一个内部int,其中-1表示null(我可以使用-1表示null,因为实id将是负数)。但是当我使用它时,这意味着我必须用这个NullAbleID类替换所有Java整数ID

因为我相信我不是第一个遇到这个问题的人,所以我想问你一个更好的解决方案:如何在Java-Flex远程处理场景中表示一个可为空的整数?


(我知道问题:,但即使是同一个问题,问题也与另一个主题有关。)

一个想法是使用标志值。比如-1,或者NaN

看看这个bug:-正如您所看到的,它被认为是一种语言限制,并且不会通过指定NaN来修复(正如一些人所建议的)

如果你想自己使用NaN方法,请查看Farata的博客。他们正在讨论AS->Java转换,但是查看注释,您将找到Java->AS的解决方案


我不会用包装类修改所有整数,我不喜欢这种方法,但它也是一种解决方案。

谢谢:但是NaN不起作用,因为您不能将NaN分配给Java整数。修改Blaze源代码(博客链接)对我来说也不是什么意见。不过还是要谢谢你,希望它对其他人有用。