在groovy中定义类型的变量

时间:2010-05-06 16:02:11

标签: java groovy

这有效吗?

def CallableStatement st

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

我真正担心的是你能指定类型并同时使用def吗?

1 个答案:

答案 0 :(得分:3)

  

这有效吗?

是,不......

是的,因为编译器很乐意编译并执行上面的代码,但是没有,因为输入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