2010-05-06 6 views
1

유효합니까?그루비 형식의 변수 정의

def CallableStatement st 

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

내가 정말로 걱정하는 것은 유형을 지정할 수 있으며 동시에 def를 사용할 수 있습니까?

답변

3

유효합니까?

예와 아니오 ....

네, 정말 또한 def과 같이 뭔가를 입력 할 말이 없기 때문에 컴파일러는, 아니 행복하게 컴파일하고 위의 코드를 실행하지만, 때문에 그것을 명시 적 유형으로 지정하십시오. 기본적으로 당신이 말하는 것은 "이 타입은 가질 수 있지만, 반드시 CallableStatement"이어야합니다. 제 생각에는 위의 정의는 컴파일러 오류를 생성해야합니다. 다음은 예시로서

CallableStatement st 

: 실제로

이 정의 :

def CallableStatement st 

는 동일 것으로 보인다

class Foo { 
    def List l; 
} 


new Foo().l = new ArrayList() // this works 
new Foo().l = "ddd" // this throws a GroovyCastException