gpt4 book ai didi

java - 为 BeanShell 创建编译的 Java 命令

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

我想创建一个与 BeanShell 库一起使用的命令。我创建了一个这样的类:

package org.manu.bshformulas;

import bsh.CallStack;
import bsh.Interpreter;

public class IfNegative {


public static double invoke(Interpreter env, CallStack callstack,
double x, double y, double z) {
if(x < 0) {
return y;
}
return z;
}

}

我想在这个主类中使用它:

package org.manu;
// imports....

public class TestFormulaParser {

private static final String COMMAND = "IfNotNegative(x, y, y / x)";

public static void main(String[] args) throws Exception {
double x=3;
double y=2;

Interpreter interprete = new Interpreter();
interprete.set("x", x);
interprete.set("y", y);
double output = Double.valueOf(interprete.eval(COMMAND).toString());
return output;
}

但它对我说它不识别 IfNegative 命令。

如何导入命令?

最佳答案

@Manuelarte:

首先,您创建的编译命令的名称是IfNegative 而不是IfNotNegative其次,您需要像这样导入包含编译命令的包。

importCommands("org.manu.bshformulas"); //import in bsh

您可以将所有已编译的类放在这个单独的包中,并且通过此导入您可以访问它们。
现在您正在从您的 java 代码中调用 beanshell 脚本,为了使其正常工作 TestFormulaParser 应该如下所示:

public class TestFormulaParser {

private static final String COMMAND = "IfNegative(x, y, y / x)";

private static final String IMPORT = "importCommands(\"org.manu.bshformulas\");";

public static void main(String[] args) throws Exception {
double x = 3;
double y = 2;
Interpreter interprete = new Interpreter();
interprete.set("x", x);
interprete.set("y", y);
interprete.eval(IMPORT);
double output = Double.valueOf(interprete.eval(COMMAND).toString());
System.out.println("Output:" + output);
}
}

关于java - 为 BeanShell 创建编译的 Java 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598674/

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