在JShell中,如何从字符串加载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代码的方法:

公共静态字符串生成(){…}
它以
字符串的形式返回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中有一些工具允许将
    字符串
    提升到代码段。我找不到类似的东西,但如果有,可能会有帮助
  • 我知道我可以
    /打开
    一个文件,因此可以将
    字符串
    写入一个文件,然后打开/加载它。然而,这是一个两步的过程,我希望有一个更简单的解决方案