1

编译以下 Groovy 类

@CompileStatic
class StaticCompileTest {

   private def fieldInt = 3

}

.class反编译文件时会生成此类:

public class StaticCompileTest implements GroovyObject {
    private Object fieldInt;
}

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

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

4

1 回答 1

4

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

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

于 2017-07-07T10:33:33.627 回答