According to http://groovy.codehaus.org/Things+you+can+do+but+better+leave+undone
- Accessing an object’s type like a property
Using .class instead of .getClass() is ok – as long as you know
exactly what kind of object you have. But then you don’t need that at
all. Otherwise, you run in the risk of getting null or something else,
but not the class of the object.a = [:] println a.class.simpleName // NullPointerException, because
a.class is null.
Can someone explain why this is? Why does .class return something different than getClass()
Because when
ais a map,a.classis the same in Groovy asa.get( "class" ). As you can see in the example in the docs, this will return null. That’s why the rule trends to be to use getClass unless you’re absolutely sure the variable won’t be a map