BlazeDS маршаллы Java Float для ActionScript int - PullRequest
1 голос
/ 20 июня 2011

Я использую BlazeDS для маршаллинга Java-объектов во Flex.Я вижу, что если Java Float содержит целочисленное значение (целое число, например, 123), то оно превращается в ActionScript int.Я ожидаю, что Java Float всегда маршалируется в ActionScript Number, как указано в Руководстве разработчика BlazeDS .

. Есть ли способ настроить это или это простоОшибка BlazeDS?

Последующие действия : Поплавок содержится на карте.Карта Java, которая передается в BlazeDS, выглядит примерно так:

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

Когда она поступает на стороне Flex *, 1016 * является Object:

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

отпечатками:

123
int

Таким образом, оно корректно сериализует значение, так же как и неправильный тип.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Это не имеет ничего общего с самой 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!!

Надеюсь, это действительно помогло!

0 голосов
/ 20 июня 2011

Являются ли имена переменных одинаковыми в объектах значений AS3 / Java?

В объекте значений, который имеет тег RemoteClass, AS3

public var myfloat:Number;

Java

public float myfloat = 10.4f;

Для точности информации: посмотрите на этот пост: Как бороться с точностью чисел в ActionScript?

...