gpt4 book ai didi

java - 在 beanshell 中评估一串代码并获取 beanshell 解释器返回的值

转载 作者:行者123 更新时间:2023-11-30 11:21:30 24 4
gpt4 key购买 nike

我正在使用 beanshell bsh-2.0b4.jar 文件。我有构建路径并在 java 程序中使用它。我已经设法从控制台获取打印语句。但是如果是返回一个值,如何获取返回值。

    import java.io.*;
import bsh.Interpreter;
import bsh.EvalError;
public class CaptureDis {

/**
* @param args
*/
public static void main(String[] args) {
Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps2 = System.out;

try {
//i.eval(System.out.println("System.out.println(\"test\");"));
i.eval("int x=2; int y=3; int res=x+y; return res");
i.getOut();
} catch (EvalError e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String out = baos.toString();
System.setOut(ps2);
System.out.println(out);
}

}

最佳答案

我没有测试您的脚本,但我怀疑您缺少 HashSet 的导入语句。您实际上不需要脚本中的 HashSet 声明。由于您在调用之前设置了“hs”,因此解释器知道它。您的脚本应如下所示:

   srcCode = "for(i=0;i<10;i+=2){ hs.add(i); }";

请注意,关于您的第一个问题,如果您在调用之前设置“hs”,您需要显式返回它,因为最后计算的表达式 ( hs.add(i) ) 返回一个 boolean 值。但是,由于您传递的是对“hs”的引用,因此根本不需要返回它。

关于java - 在 beanshell 中评估一串代码并获取 beanshell 解释器返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com