Groovy статическая компиляция (@CompileStatic) превращает типы полей класса в `Object`

Компиляция следующего класса Groovy

@CompileStatic
class StaticCompileTest {

   private def fieldInt = 3

}

результаты в этом классе, при декомпиляции .class файл:

public class StaticCompileTest implements GroovyObject {
    private Object fieldInt;
}

Изменение поля на final не меняет ситуацию.

Почему в этом случае Groovy-компилятор не может получить тип?

1 ответ

Решение

Потому что изначально небезопасно предполагать, что тип не изменится.

см. http://docs.groovy-lang.org/latest/html/documentation/

Другие вопросы по тегам