如何以编程方式将变量添加到Shell中,从中调用了一些代码?

使用jshell,有没有办法在解释器的范围内创建变量?我有类似的东西

Map<String,Object> vars = loadVarsFromSomething();

我希望能够做类似的事情

for ( Map.Entry<String,Object> key : vars )
{
  scope.put( key.getKey(), key.getValue() );
}

那可能吗?

请注意,我所指的“范围”是jshell解释器正在使用的Shell对象的实际范围.我需要获取对shell调用的引用,以便我可以创建变量看起来好像是由用户/来电者分配的..

解决方法:

要从输入文件加载变量,您可以使用Jshell script本身.

假设名为some.jsh的Jshell脚本需要提供两个变量,其中一个是String,另一个是原始整数.

// Random stuff initially
{
  System.out.println("One Jshell Script");
}
// Variables to be supplied when jshell loads.
int x = 10;
String y = "Cool";

使用以下命令执行上述脚本:

jshell some.jsh 

此后,您可以使用其标识符访问这些变量,如下所示: –

如何以编程方式将变量添加到Shell中,从中调用了一些代码?

毫无疑问,您可以使用更复杂的数据结构(在您的情况下为Map< String,Object> vars)以及在脚本中存储信息.

上一篇:java – JShell如何查找变量或结果的类型


下一篇:Java 10 var关键字详解和示例教程