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

时间:2017-07-07 09:44:47

标签: groovy static-compilation

编译以下Groovy类

@CompileStatic
class StaticCompileTest {

   private def fieldInt = 3

}
在反编译.class文件时,

会产生此类:

public class StaticCompileTest implements GroovyObject {
    private Object fieldInt;
}

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

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

1 个答案:

答案 0 :(得分:4)

因为假设类型不会改变本身就不安全。

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