Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用户输入的公式解析(eval)_Java_Google App Engine_Jsr223 - Fatal编程技术网

Java 用户输入的公式解析(eval)

Java 用户输入的公式解析(eval),java,google-app-engine,jsr223,Java,Google App Engine,Jsr223,大家好 我试图弄清楚如何允许用户对某些指定数据调用方法 我想提供一组预定义的函数: 移动平均线,移动平均线(x,5)…将是x上的5天移动平均线 3*x+y……等等 因此,基本上,我将为用户提供各种数据系列(x,y,z…)和一组函数,它们移动+-/*…并且他们应该能够编写简单的公式(仅限于我提供的函数) 如何做到这一点 我将在Java应用程序引擎上部署它 所以,我已经发现了JSR-223……但我不确定它是否合适?我想我可以使用Eval函数 谢谢,您需要使用反射来调用unknow方法。看一个阿帕

大家好

我试图弄清楚如何允许用户对某些指定数据调用方法

我想提供一组预定义的函数:

  • 移动平均线,移动平均线(x,5)…将是x上的5天移动平均线
  • 3*x+y……等等
因此,基本上,我将为用户提供各种数据系列(x,y,z…)和一组函数,它们移动+-/*…并且他们应该能够编写简单的公式(仅限于我提供的函数)

如何做到这一点

我将在Java应用程序引擎上部署它

所以,我已经发现了JSR-223……但我不确定它是否合适?我想我可以使用Eval函数


谢谢,

您需要使用反射来调用unknow方法。看一个阿帕奇小动物

您可以有一个值为1、2、3的文本框,将这些值转换为对象数组

使用另一个组合框,其中包含所有可以调用的方法

然后使用Bean Util调用对象数组的方法

例如:

类MyMathManager{

public void doccalculationType1(对象参数…{…} public void doccalculationType2(对象参数…{…} public void doccalculationtype3(对象参数…{…}

然后看看BeanUtil的Java来调用这些方法


祝你好运。

听起来你想要的是一个简单语法的解释器。对Aerosteak建议的方法要非常小心;允许用户直接调用代码中的函数是危险的,而且很容易在沙箱中出错,从而导致安全漏洞。这还要求你编写own解析器


最简单的方法可能是使用现有的语言—Javascript可能非常适合,您可以使用Java编写的Javascript解释器。

这听起来像是可以在客户端而不是服务器上完成的事情。您可以编写一些方便的Javascript函数,在服务器上调用restful API为一些更方便的javascript函数提供所需的数据,这些函数可以进行有用的计算。允许用户在自己的客户端上进行评估几乎总是安全的。他们在任何情况下都可以这样做。

谢谢你的回答!但这不完全是我想要的。