According to http://groovy.codehaus.org/Things+you+can+do+but+better+leave+undone
- Accessing an object\'s type like a property
Because when a
is a map, a.class
is the same in Groovy as a.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
A non-map example is the difference between the class of a type, and the class of an instance. The .class and .getClass() of an instance is its type, with some exceptions, e.g. maps. The .class of a type, is the type. The .getClass() of a type is java.lang.Class
For example:
def a = Integer.getClass()
def b = Integer.class
def c = 1.getClass()
def d = 1.class
println a
println b
println c
println d
will give the output:
class java.lang.Class
class java.lang.Integer
class java.lang.Integer
class java.lang.Integer