在JShell中,如何从字符串加载Java代码?
我实现了一个生成Java代码的方法:在JShell中,如何从字符串加载Java代码?,java,jshell,Java,Jshell,我实现了一个生成Java代码的方法: 公共静态字符串生成(){…} 它以字符串的形式返回Java代码,也就是说,我可能会 “公共类X{public静态字符串X(){return\'X\';}” 作为生成的返回值。现在,我在一个会话中,我可以调用generate,但是我无法将generate的结果加载到JShell本身 理想情况下,我希望实现以下目标 jshell> eval(generate()); | created class X jshell> X.x(); $2 ==
公共静态字符串生成(){…}
它以字符串的形式返回Java代码,也就是说,我可能会
“公共类X{public静态字符串X(){return\'X\';}”
作为生成的返回值。现在,我在一个会话中,我可以调用generate
,但是我无法将generate
的结果加载到JShell本身
理想情况下,我希望实现以下目标
jshell> eval(generate());
| created class X
jshell> X.x();
$2 ==> "x"
在上面(假设的)JShell会话中,eval
是我正在寻找的函数
我已经尝试过的可能解决方案:
- 我知道通过调用
JShell#eval
可以实现这一点,但我无法获取表示当前运行的JShell的JShell
对象
- 可能是JShell中有一些工具允许将
字符串
提升到代码段。我找不到类似的东西,但如果有,可能会有帮助
- 我知道我可以
/打开
一个文件,因此可以将字符串
写入一个文件,然后打开/加载它。然而,这是一个两步的过程,我希望有一个更简单的解决方案