我可以严格评估 Java 中存储为字符串的布尔表达式吗?

2024-01-12

我希望能够计算存储为字符串的布尔表达式,如下所示:

"hello" == "goodbye" && 100 < 101

我知道已经有很多这样的问题了,但我问这个问题是因为我已经尝试过这个问题最常见的答案,豆壳 http://www.beanshell.org/,并且它允许对这样的语句进行评估

"hello" == 100

没有任何麻烦。有谁知道 FOSS 解析器会因操作数不匹配等问题而引发错误?或者 BeanShell 中是否有一个设置可以帮助我?我已经尝试过 Interpreter.setStrictJava(true) 。

为了完整起见,这是我当前使用的代码:

Interpreter interpreter = new Interpreter();
interpreter.setStrictJava(true);    
String testableCondition = "100 == \"hello\"";
try {
    interpreter.eval("boolean result = ("+ testableCondition + ")");
    System.out.println("result: "+interpreter.get("result"));
    if(interpreter.get("result") == null){
        throw new ValidationFailure("Result was null");
    }
} catch (EvalError e) {
    e.printStackTrace();
    throw new ValidationFailure("Eval error while parsing the condition");
}

Edit:

我当前的代码返回此输出

result: false

没有错误。我希望它做的是抛出 EvalError 或某物让我知道存在不匹配的操作数。


在 Java 6 中,您可以动态调用编译器,如本文所述:

http://www.ibm.com/developerworks/java/library/j-jcomp/index.html http://www.ibm.com/developerworks/java/library/j-jcomp/index.html

您可以使用它来将表达式动态编译为 Java 类,如果您尝试将字符串与数字进行比较,则会抛出类型错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以严格评估 Java 中存储为字符串的布尔表达式吗? 的相关文章

随机推荐

  • 将数组作为 x-www-form-urlencoded 的一部分发送

    I want to send array using postman the request looks like this Im using postman to execute requests I found on the inter
  • 如何通知另一个线程

    我想知道如何通知另一个线程的最佳方式 例如 我有一个后台线程 public void StartBackgroundThread new Thread new Runnable Override public void run Do som
  • 自定义 jQuery 下拉菜单

    我正在使用 jQuery 创建一个自定义的简单下拉菜单 该下拉菜单根据过度状态隐藏 显示元素 我现在遇到的问题是 当您查看它隐藏的显示元素时 您无法将鼠标移动到创建的下拉列表中 关于如何解决这个问题还有什么想法 有没有更简单的方法来做我所拥
  • 使用 Qt 设计应用程序

    我必须实现图形用户界面设计 选择的框架是Qt 经过一些实施工作后 出现了一些困难和问题 主要的一点是有一些花哨的设计元素 比如渐变 3D效果 阴影等等 目前使用的方法 我真的不太喜欢 是使用图形设计中的位图作为各种小部件的背景 根据元素的放
  • CVPixelBuffer 到 CIImage 总是返回 nil

    我试图将从 AVPlayerItemVideoOutput 中提取的 PixelBuffer 转换为 CIImage 但总是为零 The Code if videoOutput hasNewPixelBufferForItemTime pl
  • iPhone模拟器资源未更新

    我的 iPhone 模拟器拒绝更新我编辑的资源 进行 清理 并构建后 安装了新资源 在第二次运行时 它重新安装了旧的 我不知道它们是从哪里来的 有什么建议么 Go into Library Application Support iPhon
  • 比较 2 个文件并保留两个文件不共同的条目

    我有一个 CSV 文件和一个数据库表作为输入 我需要保留数据库表中的所有记录 但排除 CSV 文件中的记录 最终所有内容都会写入 CSV 文件 我所有的尝试都导致了数百个重复 所以我在这里面临很大的挑战 这是一个快速而肮脏的技巧 但它应该适
  • Concrete5:我可以在常规页面上使用 $_GET 变量作为查询字符串吗?

    GET 变量如何与 Concrete5 一起使用 我可以在常规页面上使用它吗 我知道我可以通过 url 段对单页执行此操作 我只是想知道常规页面是否可以 例子是 http www domain name com about us name
  • 弯曲方向列的高度相等,无需设置高度

    我想要一个没有明确设置高度的弹性容器 并且它的所有子容器都具有相同的高度 我不太清楚如何实现这一点 如果弹性容器设置了高度 我可以让它工作 但我希望它的高度根据子项是动态的 同样 它们应该都是相等的 并根据最大的孩子计算 我不想依赖js来使
  • Matplotlib 获取子图(轴)大小?

    只是徘徊 如何获得 Matplotlib 中子图 轴 的大小 如果我执行 Ctrl F 大小 https matplotlib org 3 1 1 api axes api html https matplotlib org 3 1 1 a
  • SQL Server 返回不等于 <> 值且为 NULL 的行

    我有一个表 其中有一列值可以是 rowTypeID 1 2 3 or null 我想编写一个查询 返回其中不包含值 3 的任何行 在此示例中 我想要所有 NULL 行以及所有 1 2 行 我只是不想要值为 3 的行 当前为数据库设置了 Se
  • 将 Gridsearch 中的最佳参数保存在 pandas 数据框中

    我需要将所有参数组合和相应的精度保存在一种 pandas 数据框中 我希望我已经说清楚了 如果我做错了什么 请指出 示例代码是 from sklearn grid search import GridSearchCV import skle
  • 如何检测 ES 模块是否是主模块?

    如何检测 ECMAScript 模块是否为主模块 这对于 CommonJS 模块来说很容易 参见检测是通过 require 调用还是直接通过命令行调用 https stackoverflow com questions 6398196 de
  • Pydantic - 动态创建具有多个基类的模型?

    来自pydantic 文档 https pydantic docs helpmanual io usage models 我的理解是 import pydantic class User pydantic BaseModel id int
  • 如何使用 Entity Framework 和 EntityState.Modified 更新对象的并非每个字段

    我需要更新给定实体对象的除 property1 和 property2 之外的所有字段 有这个代码 HttpPost public ActionResult Add object obj if ModelState IsValid cont
  • NSMutableUrlRequest 吃加号

    我创建 NSMutableUrlRequest 用于将数据发送到服务器 向其中添加所有必需的字段 然后添加用于发送的字符串 如下所示 theRequest setHTTPBody postString dataUsingEncoding N
  • MongoDB 更改流中的resumeAfter 和startAtOperationTime 之间的区别

    在版本 4 中 MongoDB 更改流可以使用两个不同的参数来指定恢复更改流的位置 resumeAfter 一些内部令牌 和startAtOperationTime 时间戳类型 是否可以完全替代resumeAfter with startA
  • MySql 查看性能 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果您走上使用视图的道路 如何才能确保良好的性能 或者最好不要首先使用视图 而只是将等效项合并到您的 select 语句中 这取决于
  • UITableViewCelldrawInRect iOS7

    您好 我正在尝试使用以下代码在 iOS 7 中的 UITableViewCell 中绘制字符串 void drawRect CGRect rect super drawRect rect CGRect playerNameRect CGRe
  • 我可以严格评估 Java 中存储为字符串的布尔表达式吗?

    我希望能够计算存储为字符串的布尔表达式 如下所示 hello goodbye 100 lt 101 我知道已经有很多这样的问题了 但我问这个问题是因为我已经尝试过这个问题最常见的答案 豆壳 http www beanshell org 并且