BlazeDS将Java Float编组为ActionScript int



我正在使用BlazeDS将Java对象编组到Flex。我看到的是,如果Java Float包含一个整数值(整数,如123),那么它将被编组为ActionScript int。我希望Java Float总是被编组为ActionScript Number,如BlazeDS Developer Guide中所述。

有没有办法对此进行配置,或者这只是一个BlazeDS错误?

后续:浮动包含在映射中。传递给BlazeDS的Java映射看起来像:

Map map = new HashMap();
Float f = 123.0;
map.put("number", f);

当它到达Flex侧时,mapObject:

var map:Object = ...
trace(map.number);
trace(getQualifiedClassName(map.number));

打印:

123
int

因此,它正确地序列化了值,就像错误的类型一样。

这与BlazeDS本身无关。这是AS3的"功能"。。

这将有助于了解发生了什么。或者让你更加困惑。。。

第一件事:**JAVA:JAVA.lang.Float and Float==>AS3:数字**

var number:Number = 4.5;
trace(typeof(number) == "number");      //true
trace(number is Number);                //true
var integer:int = 2;
trace(typeof(integer) == "number");     //true!
trace(integer is Number);               //true!
//number=4.5
trace(number is int);                   //false
trace(getQualifiedClassName(number));   //Number
//Here comes the fun..
number=number-0.5; //number=4
trace(number is int);                   //true!!
trace(getQualifiedClassName(number));   //int!!

希望这真的有帮助!

AS3/Java值对象中的变量名是否相同?

在具有RemoteClass标记的值对象中,AS3

public var myfloat:Number;

Java

public float myfloat = 10.4f;

有关精度信息:请查看此帖子:如何在Actionscript中处理数字精度?

相关内容

  • 没有找到相关文章

最新更新