Есть ли разница между объявлением переменной с помощью «def» и объявлением ее с известным типом? - PullRequest
2 голосов
/ 29 декабря 2011

Предполагая, что у меня есть определенный класс

class MyClass {
}

Есть ли снижение производительности во время выполнения при выполнении def c = new MyClass() вместо MyClass c = new MyClass()?Или это точно так же?

1 Ответ

3 голосов
/ 30 декабря 2011

def является заменой имени типа. В определениях переменных он используется для указания того, что вам не важен тип.

Если вы не объявите тип переменной, Groovy под обложками будет объявлен как тип Object. Вы можете думать о def как псевдоним Object.

В вашем примере:

def c = new MyClass()
// transform to:
java.lang.Object c = new MyClass()

MyClass c = new MyClass()
// transform to:
MyClass c = new MyClass()
...