2010-05-06 98 views
1

這是有效的嗎?在groovy中定義變量類型

def CallableStatement st 

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

我真的很擔心的是你可以指定類型並同時使用def嗎?

回答

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