gpt4 book ai didi

java - 将 HashMap 与 java ScriptEngine 绑定(bind)

转载 作者:行者123 更新时间:2023-11-28 08:46:39 24 4
gpt4 key购买 nike

我正在尝试测试 ScriptEngine 以满足我自己的需求。在我的 Java 程序中,我有一个变量:

HashMap<String,HashMap<String,String[]>> mymap = new HashMap<String,HashMap<String,String[]>>();

例如,它包含{Source, {service = ["TCP"]}}现在,我希望能够将此映射传递给 ScriptEngine,以便在读取映射内容时评估表达式。我尝试执行以下操作:

HashMap<String,String[]> Source = new HashMap<String,String[]>();
Source.put("service", new String[]{"TCP"});
mymap.put("Source", Source);
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Bindings bindings = new SimpleBindings();
bindings.put("map", mymap);
String exp = "println(\"Hello from inside scripting!\");"
+ "println(\"map = \" + map)";
engine.eval(exp,bindings);

但是它不起作用。我得到:

Hello from inside scripting!
mymap = {Source={service=[Ljava.lang.String;@4e2e29c}}

我尝试了 map.Source 或 map['Source'] 但它们都不起作用。我怎样才能让它发挥作用?这样字符串就可以通过并对其进行评估吗?更重要的是,因为它可以解决我的任何问题,我可以调试 javascript 运行时吗?这样我就可以看到那里发生了什么。

最佳答案

我通过从其他示例中认识到求值字符串内的语法应该是 Java 应用程序的语法来解决这个问题,因此,作为映射,我这样做了:

map.get('Source').get('service')

第一个 .get() 返回映射 Source 键的值,然后第二个 .get() 返回 service 的值。我真的很想知道这种评估过程的表现如何。此外,是否可以调试它?

关于java - 将 HashMap 与 java ScriptEngine 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com