确定Groovy表达式的返回类型

时间:2012-10-29 09:06:48

标签: java groovy abstract-syntax-tree

我有一些Groovy表达式的字符串。我需要:

  1. 执行java.lang.String
  2. 中包含的Groovy表达式
  3. 获取表达式的结果作为对象
  4. 确定生成对象的类型
  5. 有可能吗?另外,如果我不使用Groovy的动态功能,我是否能够“静态地”确定表达式的类型,即在编译时不执行表达式本身。

    由于

1 个答案:

答案 0 :(得分:1)

一种非常简单易用的方法是使用Eval class。计算指定的String表达式并返回结果。表达式的类型结果为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