1

Compiling the following Groovy class

@CompileStatic
class StaticCompileTest {

   private def fieldInt = 3

}

results in this class, when decompiling the .class file:

public class StaticCompileTest implements GroovyObject {
    private Object fieldInt;
}

Changing the field to be final does not change the situation.

Why is the Groovy compiler in this case not able to derive the type?

jack_kerouac
  • 1,482
  • 2
  • 15
  • 30

1 Answers1

4

Because it's inherently unsafe to assume that the type won't change.

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

melix
  • 1,510
  • 7
  • 6