java - 如何在 MVEL 中公开常量值?

标签 java reflection scripting mvel

我有一个常量想要导入/公开给 MVEL表达式:

public static final String PRODUCT_NAME;

我知道我可以使用 addImport 导入类、包和静态方法,但不支持常量。

我考虑过写一个custom VariableResolver但这看起来有点矫枉过正。有没有更简单的方法来做到这一点?

[编辑]要明确的是,我希望能够在我的表达式中执行此操作:

"Thanks for using " + PRODUCT_NAME

最佳答案

您可以使用完全限定名称直接引用它:org.foo.Bar.PRODUCT_NAME

-或-

您可以使用 MVEL 编译器以编程方式导入:

ParserContext ctx = ParserContext.create();
ctx.addImport(YourClass.class);

String expr = "YourClass.PRODUCT_NAME";
Serializable compiled = MVEL.compileExpreasion(expr, ctx);
Object result = MVEL.executeExpression(compiled);

关于java - 如何在 MVEL 中公开常量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791022/

相关文章:

java - 在团队中任意使用代码格式化程序模板是否有意义?

java - 该类型的方法未定义。帮我解决它

c# - 确定一个类是否实现了一个非常具体的接口(interface)

java 。我如何使用反射向上转换类型?

c# - 使用反射获取泛型实例泛型类型

javascript - 如何模拟支持JS的浏览器?

java - 使用ajax请求对象并处理它们

Java NetBeans IDE - JPanel 中的动画闪烁

python - 使用 STDOUT 作为 openvpn auth-user-pass 的输入

linux - 在双十进制 shell 脚本中打印时间