Это действительно?
Да и нет ....
Да, потому что компилятор с радостью скомпилирует и выполнит приведенный выше код, но нет, потому что на самом деле нет никакого смысла печатать что-то как def
, а также назначать его как явный тип. По сути, вы говорите: «это может быть любой тип, но это должно быть CallableStatement
». На мой взгляд, определение выше должно генерировать ошибку компилятора.
На практике это определение:
def CallableStatement st
Кажется идентичным:
CallableStatement st
Как показано ниже:
class Foo {
def List l;
}
new Foo().l = new ArrayList() // this works
new Foo().l = "ddd" // this throws a GroovyCastException