Why does groovy .class return a different value than .getClass()

后端 未结 2 1556
悲&欢浪女
悲&欢浪女 2020-12-17 14:31

According to http://groovy.codehaus.org/Things+you+can+do+but+better+leave+undone

  1. Accessing an object\'s type like a property
相关标签:
2条回答
  • 2020-12-17 14:55

    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

    0 讨论(0)
  • 2020-12-17 15:11

    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
    
    0 讨论(0)
提交回复
热议问题