2011-01-31 82 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