1

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

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

是否可以?另外,如果我不使用 Groovy 的动态特性,我是否能够“静态地”确定表达式的类型,即在编译时不执行表达式本身。

谢谢

4

1 回答 1

1

一个非常简单易行的方法是使用Eval 类。计算指定的 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
于 2012-10-29T11:57:00.347 回答