为什么 jshell return 使用 StackWalker 清空字符串

why does jshell return empty String using StackWalker

这是一个错误吗?我至少会期待一个异常而不是空字符串:

jshell> ((Supplier<String>)(()->StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).getCallerClass().getName())).get()+"invisible";
 ==> ""

使用 jshell 13.0.1

我没有解释,但这似乎是由于 shell 反馈的一些奇怪行为。

jshell> String a = ((Supplier<String>)(() -> StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).getCallerClass().getName())).get();
a ==> ""

jshell> System.out.println(a);
REPL.$JShell

jshell> "$JShell$foobar"
 ==> ""

JShell 似乎以某种方式解释字符串 $Jshell$...,但字符串本身很好。