确定Groovy表达式的返回类型



我有一些带有凹槽表达式的字符串。我需要:

  1. 执行java.lang.string中包含的groovy表达式
  2. 将表达式作为对象获得结果
  3. 确定结果对象的类型

有可能吗?另外,如果我不使用Groovy的动态功能,我是否能够"静态"确定表达式的类型,即在不执行表达式本身的情况下进行编译时。

谢谢

一种非常简单的方法是使用eval类。评估指定的字符串表达式并返回结果。表达式的类型是Object

def object = Eval.me('1 + 1')

您可以使用getClass()方法或简单地获取对象的类:

assert object.class == Integer

在此示例中,不可能在编译时确定静态检查。

@groovy.transform.TypeChecked
void test() {
    Integer object = Eval.me('1 + 1')
    assert object.class == Integer
}
[Static type checking] - Cannot assign value of type java.lang.Object to variable of type java.lang.Integer

相关内容

最新更新