将字符串转换为Java中的代码

Luk*_*cky 7 java

我遇到了一个奇怪的案子.在给定的数据库中,我得到了一个包含VARCHAR字段的记录,所以在我的实体模型中我添加了这个字段,加上getter和setter.现在是乐趣开始的地方:

下面的字符串实际上是方法的主体.它看起来像这样:

if (score <= 0.7) {return 0;} else if (score <=0.8) {return 1;} else if (score <=0.9) {return 2;} else {return 3}
Run Code Online (Sandbox Code Playgroud)

现在 - 我需要将这个字符串变成一个方法,说实话我不知道如何实现这一点.这个实际的方法需要从我得到一个得分为double,并根据给定的分数返回一个整数值.

任何人?


编辑

我知道最简单的方法是不使用这样的解决方案,但这不是我的电话,此外,数据库中有大量这样的记录,每条记录都不同.我们无法解决这个问题.我必须处理这个问题 - 所以请求解决方案的想法,我保证我会做所有的讨厌,并说这是愚蠢的:)
相信我,我,我做,我会抱怨相当一些时间.

Joo*_*gen 16

看看java脚本API

int eval(String code) {
    code = "function f () {" + code + "} f()"; // Or otherwise
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    engine.put("score", 1.4);
    Number num = (Number) engine.eval(code);
    return num.intValue();
}
Run Code Online (Sandbox Code Playgroud)

在这里我假设,JavaScript语法是可能的; 不得不填写score,你可能会在某处拦截所有未知的自由变量.


Aar*_*lla 6

您应该查看Java Scripting API.有几个实现此API的项目允许您添加运行Java代码脚本的功能.