长在地图上的关键

时间:2014-04-25 14:28:21

标签: gwt

我从服务器收到了地图。

当我试图从这个地图获取值时,总是会返回null,但我确信,该​​地图包含这样的值:

public void updateView(Map<Long, JavaScriptObjectImpl> data) {
    table.setRowData(new ArrayList<JavaScriptObjectImpl>(data.values()));
    table.redraw();
    if (selectedFileId != -1) {
        JavaScriptObjectImpl object =data.get(selectedFileId); // null is returned
        consoleLog(String.valueOf(selectedFileId));  // this line prints "11001"
        consoleLog(String.valueOf(data));            // this line prints "{11001=[object Object]}"
        boolean b = data.containsKey(selectedFileId);
        consoleLog(String.valueOf(b));               // this line prints "false"

        ...
    }
}

有谁知道在gwt中使用Long作为Map的关键是否可行? 或者帮我解决我的问题,

谢谢!

2 个答案:

答案 0 :(得分:0)

  

是否可以在gwt中使用Long作为Map中的键?

是的,GW中没有长约束作为Map中的键。


请直接从您的代码中查看此行。

consoleLog(String.valueOf(data)); // this line prints "{11001=[object Object]}"

data包含一个键11001和一个not null的值,清晰可见。

如果值为null,则会显示类似{11001=null}

的内容

答案 1 :(得分:0)

我找出了问题的原因。

for (int i = 0; i < allFilesInfo.length(); i++) {
        FileInfoJS info = allFilesInfo.get(i);
        filesInfo.put(Long.parseLong(String.valueOf(info.getFileId())), info);
}

当我形成map时,info.getFileId()的值不是Long,而是JSObject。 不幸的是,我无法解释。