2011-01-31 81 views
1

有人可以解释一下这是什么意思?Java to javascript类型转换

为Java数值 拳击对象(java.lang的类字节, 字符,short,int和长整型,浮点, 和双人间)被取消装箱并转换 到最近的JavaScript 数字类型, 当它们是 从方法声明返回类型或 使用 每个applet Packages关键字的新表达式的结果。在 这种情况下,拳击对象将 作为 Java对象返回给JavaScript引擎。

一个Java布尔是 转换到JavaScript布尔, 除了当它是从一个方法或使用每小程序 软件包关键字 新表达式的结果的声明的返回类型 。在这种情况下, 装箱对象将作为Java对象返回到JavaScript引擎 。当它们是 使用每小应用程序软件包关键字新的表达式 的结果

Java字符串被转换为 JavaScript的字符串,除了。 在这种情况下,Java字符串是 作为 Java对象返回到JavaScript引擎。

这是从liveconnect specification,但我不明白什么时候java类型将被转换为javascript类型,什么时候不会。 部分是什么意思?任何例子?

回答

2

比方说,你有

Integer i; 
i = 1; 

然后int 1转换为Integer对象自动的;那是自动装箱。

为Java数值 拳击对象(java.lang的类字节, 字符,short,int和长整型,浮点, 和双人间)被取消装箱并转换 到最近的JavaScript 数字类型,

意味着以这种方式转换的整数将回到原生javascript int

当它们从一个方法声明 返回类型或使用 每个小程序软件包关键字新的表达式的结果 除外。在这个 的情况下,拳击对象将被 作为 Java对象返回给JavaScript引擎。

...但是如果你已经声明了一个返回一个Integer的函数,它将被转换为一个Java对象表示。对于使用此Packages关键字创建的内容也是如此。 (我不知道这是什么,但是这是什么意思。)

更新:这是从规范的例子:

在JS代码

val = new app.Packages.com.mycompany.MyClass(); 

它说,如果val是Java中的Integer,则在这种情况下,它将变成javascript中的JSObject

Java字符串被转换为 JavaScript的字符串,除了当它们 是使用每小应用程序软件包关键字新的表达式 的结果。 在这种情况下,Java字符串是 作为 Java对象返回到JavaScript引擎。

同样,如果你有一个Java字符串

String s = "I am a string." 

与Java内部表示方法,它将会被转换intoa javscrip0t字符串(不同的实现和方法),除非你用包关键字创建它。

+0

让我们取javascript表达式var value = applet.getIntegerValue();并且在java代码中声明getIntegerValue以返回java.lang.Integer。所以...应该值变量是原生的JavaScript数字或它应该是java.lang.Integer,因为它遵循除了部分和返回类型是java.lang.Integer? – 2011-01-31 06:13:53