问题描述
public static String generate() { ... }
它以String
的形式返回Java代码,即我可能会得到
"public class X { public static String x() { return \"x\"; } }"
作为generate
返回的值。现在,我处于JShell Tool (JEP-222)会话中,可以调用generate
,但无法将 generate
的结果加载到JShell本身。
理想情况下,我想实现以下目标
jshell> eval(generate());
| created class X
jshell> X.x();
$2 ==> "x"
在上述(假设的)JShell会话中,eval
是我正在寻找的功能。
我已经尝试过的可能解决方案:
- 我知道可以通过调用
JShell#eval
来实现,但是我无法获得代表当前运行的JShell的JShell
对象。 - 可能是JShell中有一些功能可以将
String
提升到代码段。我找不到类似的东西,但是如果有的话,可能会有所帮助。 - 我知道我可以
/open
一个文件,因此可以将String
写入文件,然后打开/加载它。但是,这是一个两步过程,我希望有一个更简单的解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)