Groovy 静态编译 (@CompileStatic) 将 class 字段的类型转换为 `Object`

Groovy static compilation (@CompileStatic) turns types of class fields into `Object`

编译如下Groovyclass

@CompileStatic
class StaticCompileTest {

   private def fieldInt = 3

}

在反编译 .class 文件时得到此 class:

public class StaticCompileTest implements GroovyObject {
    private Object fieldInt;
}

将字段更改为 final 不会改变这种情况。

为什么 Groovy 编译器在这种情况下无法派生类型?

因为假设类型不会改变本质上是不安全的。

http://docs.groovy-lang.org/latest/html/documentation/#_variables_vs_fields_in_type_inference