1

有人可以解释这是什么意思吗?

Java 数值的装箱对象(java.lang 类 Byte、Character、Short、Int、Long、Float 和 Double)被拆箱并转换为最接近的可用 JavaScript 数值类型,除非它们是方法声明的返回类型或使用 per-applet Packages 关键字的新表达式的结果。在这种情况下,装箱对象将作为 Java 对象返回给 JavaScript 引擎。

Java Boolean 被转换为 JavaScript boolean, 除非它是方法声明的返回类型或使用 per-applet Packages 关键字的新表达式的结果。在这种情况下,装箱对象将作为 Java 对象返回给 JavaScript 引擎。

Java 字符串被转换为 JavaScript 字符串,除非它们是使用 per-applet Packages 关键字的新表达式的结果。在这种情况下,Java 字符串作为 Java 对象返回给 JavaScript 引擎。

这是来自liveconnect 规范,但我不明白 java 类型何时会转换为 javascript 类型,何时不会。除了部分是什么意思?有什么例子吗?

4

1 回答 1

2

假设你有

Integer i;
i = 1;

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

Java 数值的装箱对象(java.lang 类 Byte、Character、Short、Int、Long、Float 和 Double)被取消装箱并转换为最接近的可用 JavaScript 数值类型,

意味着以这种方式转换的整数将恢复为原生 javascript int

除非它们是方法声明的返回类型或使用 per-applet Packages 关键字的新表达式的结果。在这种情况下,装箱对象将作为 Java 对象返回给 JavaScript 引擎。

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

更新:这是规范中的一个示例:

在 JS 代码中:

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

就是说 ifval是,比如说, IntegerJava 中的 an,在这种情况下,它变成了JSObjectjavascript 中的 a。

Java 字符串被转换为 JavaScript 字符串,除非它们是使用 per-applet Packages 关键字的新表达式的结果。在这种情况下,Java 字符串作为 Java 对象返回给 JavaScript 引擎。

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

String s = "I am a string."

使用 Java 内部表示和方法,它将被转换为 javscrip0t 字符串(不同的实现和方法),除非您使用 Packages 关键字创建它。

于 2011-01-31T06:00:42.703 回答