当前位置: 首页 > 知识库问答 >
问题:

Java:使用String作为源代码的一部分[复制]

罗星洲
2023-03-14

今天我有一个多年来一直萦绕在我心头的问题<在java中有以下评价:

new EvaluationListener(){  
    public boolean evaluate(boolean[] b){
        return b[0] || b[1];
    }
}

我在我的程序中使用这段代码来评估b[0]和b[1]不同布尔值的术语,但这在这里一点也不重要。
目前我正在将评估写入源代码,让程序运行并观看命令行中的结果。
现在我想知道如何在命令行中实现计算。我希望能够在命令行中输入一个评估术语,用BufferedReader等读取它,而不是将其写入源代码。

有什么办法吗?我认为可以使用一些变量别名,比如$b0$。但是我怎样才能将逻辑OR和NOT传递给程序呢?

谢谢你的回答

共有1个答案

白彦
2023-03-14

下面是一个使用Java脚本API进行表达式计算的示例:

ScriptEngineManager scriptEngineManager = new ScriptEngineManager();

ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("ECMAScript");
scriptEngine.put("b1", true);
scriptEngine.put("b2", false);

System.out.println(scriptEngine.eval("b1 || b2"));
System.out.println(scriptEngine.eval("b1 && b2"));

运行时,此代码打印:

true
false
 类似资料:
  • 问题内容: 我有很多Java源代码,需要自定义预处理。我想摆脱它,但是现在不可行,所以我坚持了下来。鉴于我有一个不幸的问题,而这个问题本来不应该存在的,那么我该如何使用Maven解决这个问题呢? (对于整个故事,我要用一个maven替换一个基于python的构建系统,因此请一次进行一次改进。修复非标准源代码会更加困难,并且将在以后发布。) 是否可以使用任何现有的Maven插件在编译时实际更改源文件

  • 我需要在源代码中隐藏密码,有什么可能的方法来混淆密码,以降低反编译的风险? 例如

  • 问题内容: 说我的源在我的src /树中(可能在我的测试/树中)。说我只想编译那棵树的 一部分 。我可能要这样做的原因多种多样。仅作为示例,我可能想要创建最小的jar(不包括某些类),或者我想要最快的编译时间来进行编译。我绝对想编译所有依赖项! 可以使用以下命令从命令行轻松实现: 现在,如何使用蚂蚁来做到这一点?javac ant 任务将编译所有内容: 将对源目录和目标目录进行递归扫描,以编译Ja

  • 问题内容: 我想将参数表达式用作in子句的一部分。我想查询在一组Bar中具有Bar的Foos列表。这可能吗? 问题答案: 使用表达式时,您只能使用基本比较类型,因此您需要进行联接并比较基本类型的字段(在此我已经使用过):

  • 问题内容: var arr = []; function l(min,max,maxLen){ return function(arr){ var random = Math.floor(Math.random() * (max - min + 1)) + min; if(!arr.includes(random)){ arr.push(random); } if(arr.length >= ma

  • 线程“main”java.lang.UnsatifiedLinkError:查找函数“StartConector”时出错:找不到指定的过程。在com.sun.jna.function.(function.java:179)在com.sun.jna.nativelibrary.getfunction(nativelibrary.java:350)在com.sun.jna.nativelibrary.