簡體   English   中英

將Java objecs分配給node.js變量

[英]Assigning java objecs to node.js variable

這是我的代碼,使用“ java”模塊在node.js中創建Java對象。 創建了四個java對象,我希望它們一起作為一個對象。 所以我正在使用變量“ args”來保存這些java對象。

var java = require("java");
java.classpath.push("commons-lang3-3.1.jar");
java.classpath.push("commons-io.jar");
var soap = require('soap');

var vehId = java.newInstanceSync("java.lang.Integer", 922);
var lattitude = java.newInstanceSync("java.lang.Double", 8.6717136);
var longitude = java.newInstanceSync("java.lang.Double", 76.8168311);
var GregorianCalendar = java.import('java.util.GregorianCalendar');
var time = new GregorianCalendar(2014,4,29,8,7,6);
console.log('vehId: '+vehId+'\nlattitude: '+lattitude+'\nlongitude '+longitude+'\ntime: '+time+'\n\n');

var args = {
            vehicleId : vehId,
            lat : lattitude,
            lan : longitude,
            packetTime: time
};
console.log(args);

這是我得到的輸出。

vehId:922

緯度:8.6717136

經度76.8168311

時間:java.util.GregorianCalendar [time = ?, areFieldsSet = false,areAllFieldsSet = false,lenient = true,zone = sun.util.calendar.ZoneInfo [id =“ Asia / Calcutta”,offset = 19800000,dstSavings = 0, useDaylight =假,過渡= 6,lastRule =空],Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = ?, YEAR = 2014,MONTH = 4,WEEK_OF_YEAR = ?, WEEK_OF_MONTH = ?, DAY_OF_MONTH = 29,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,HOUR = 8,HOUR_OF_DAY = 8,MINUTE = 7,SECOND = 6,微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]

{vehicleId:922,

拉:8.6717136,

lan:76.8168311,

packetTime:{}

}

有人告訴我為什么'args'對象的'packetTime'變量沒有分配'time'值嗎? 為什么顯示為{} ???

轉換為JavaScritp對象后,如何構造GregorianCalendar對象還不清楚。

但是它在您的第一個日志中起作用的原因是,在這種情況下,您將其連接為字符串,因此實際上是在Gregorian日歷中觸發了toString方法,該日歷似乎使用了Java方法的實現。

換句話說,如果您執行以下任一操作:

console.log('' + time);
console.log(time.toString());
console.log("%s", time);

您將獲得預期的輸出字符串。

另一方面, console.log(time)不會調用對象的toString方法,而是嘗試檢索哈希對象中的所有鍵。 看起來GregorianCalendar對象沒有任何可見的可枚舉屬性,這就是為什么您將得到空結果的原因。

console.log("%j", time);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM