如何计算 Java 中的“(1.25 > 8)?(2.3125 * sin(90) * 1.25) : (2.3125 * sin(90) * 8)”
How to evaluate "(1.25 > 8)? (2.3125 * sin(90) * 1.25) : (2.3125 * sin(90) * 8)" in Java
我正在使用 org.springframework.expression.spel.standard.SpelExpressionParser
来解析 String
表达式,但是当我将 sin(90)
添加到该表达式时,出现以下错误:
EL1011E:(pos 50): Method call: Attempted to call method sin(java.lang.Integer) on null context object error.
知道如何解决这个问题吗?
阅读 Spring 表达式语言 (SpEL) 手册。
选项 1:§9.5.12 Functions:
You can extend SpEL by registering user defined functions that can be called within the expression string.
选项 2:§9.5.9 Types:
The special T
operator can be used to specify an instance of java.lang.Class (the type). Static methods are invoked using this operator as well.
如果选择选项 1,您可以注册 sin()
函数,表达式将保持不变。
如果您选择选项 2,那么表达式应该是这样的:
(1.25 > 8) ? (2.3125 * T(Math).sin(90) * 1.25) : (2.3125 * T(Math).sin(90) * 8)
我正在使用 org.springframework.expression.spel.standard.SpelExpressionParser
来解析 String
表达式,但是当我将 sin(90)
添加到该表达式时,出现以下错误:
EL1011E:(pos 50): Method call: Attempted to call method sin(java.lang.Integer) on null context object error.
知道如何解决这个问题吗?
阅读 Spring 表达式语言 (SpEL) 手册。
选项 1:§9.5.12 Functions:
You can extend SpEL by registering user defined functions that can be called within the expression string.
选项 2:§9.5.9 Types:
The special
T
operator can be used to specify an instance of java.lang.Class (the type). Static methods are invoked using this operator as well.
如果选择选项 1,您可以注册 sin()
函数,表达式将保持不变。
如果您选择选项 2,那么表达式应该是这样的:
(1.25 > 8) ? (2.3125 * T(Math).sin(90) * 1.25) : (2.3125 * T(Math).sin(90) * 8)