определение переменных с типом в Groovy - PullRequest
1 голос
/ 06 мая 2010

Это действительно?

def CallableStatement st

try {
 ...     
 st = sqlConn.prepareCall("call....")
 ...
}

Что меня действительно беспокоит, так это то, что вы можете указать тип и одновременно использовать def?

1 Ответ

3 голосов
/ 06 мая 2010

Это действительно?

Да и нет ....

Да, потому что компилятор с радостью скомпилирует и выполнит приведенный выше код, но нет, потому что на самом деле нет никакого смысла печатать что-то как 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...