好吧,我知道这是一个愚蠢的问题,但让我们考虑一下。

为什么我们不能使用repl模式或某种Java外壳。说我只想做Math.max(2,3)来获取输出3。它可以类似于Scala repl模式,默认情况下,该类和main声明被处理(扩展到App),并且仅对表达式进行求值。

技术上:

  • 后面有一个解释器可以执行它-如果scala和groovy可以执行,则表明JVM不是
  • 的主要问题
  • 如果是javac的原因,那么说我们删除所有优化,并且直接将每一行严格地直接转换为java字节代码,那么应该有一条出路。 Type Inference可能无法显示大量信息,但是至少可以显示方法的输出。在这种情况下,javac可能会有所修改
  • 示例:在调试器中,将断点附加到该行,然后向前执行。可以应用类似的策略

  • 每个JVM进程都有一个默认的外壳是很酷的,在运行时,可以访问或设置一些静态变量,并具有实时信息。

    所有这些本来都应该考虑的,但是为什么它没有被大多数人接受(尽管有一些开源实现)

    最佳答案

    这差不多就是BeanShell所做的。

    07-26 02:26