将 int 从 flex 传递回 java 时遇到问题。有问题的 int 是一个 ID,今天早上我似乎已经达到了一个阈值,因为事情开始崩溃了。
我通过 blaze 将 922927950 传回给 java。到 java 获取时,它已转换为 9.2292795E8
我在 flex 中的代码是
service.getRemoteObject().sendData(objectIds);
其中对象 ids 是一个 ArrayCollection。在这个我可以调试,看到数字是922927950。然后我可以调试java,看到它已经转换为9.2292795E8
sendData 具有以下签名
public void sendData(List<Integer> objectIds) {...}
我尝试将 flex objectids 数组更改为包含数字而不是整数,但这也不起作用。据我所知,在 java 中存储 9.2292795E8 的数字必须是浮点数。Float 确实适合 Java 中的整数,所以我认为这就是为什么我没有收到类型不匹配错误的原因。问题是 id 现在采用科学记数法,这会破坏我使用它们的 jpa 查询。
有谁知道为什么将数字转换为科学计数法?
谢谢
更新
经过更多的调查,它变得更加奇怪。我在我的java中尝试了以下代码
public void sendData(List<Integer> objectIds) {
List<Integer> converted = new ArrayList<Integer>();
for (Integer objectId : objectIds) {
converted.add(objectId);
}
...
}
我现在得到类转换异常,说我不能在 convert.add(objectId) 行上将 double 转换为 integer
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
当我在 flex 中将 922927950 转换为 Number 时会发生这种情况,我认为它映射到 Double。我的问题是我在 java 端使用泛型,而 BlazeDs 不考虑这些,所以只是匹配没有泛型的签名?