Вы получаете NullPointerException
, потому что
obj2.class
не переводится в
obj2.getClass()
, а скорее в
obj2.get("class")
Это потому, что obj2
вваш пример имеет тип Map
, и вы используете нотацию свойства.Это означает, что obj2.class
возвращает значение, связанное с ключом с именем class
, а запись значения ключа, связанная с таким ключом, не существует на вашей карте, поэтому она возвращает null
.Затем вы вызываете метод getName()
и получаете NullPointerException
.
Этот пример использования описан на странице документации Groovy Работа с коллекциями, 2.2.Обозначение свойства карты :
Примечание: по схеме map.foo
всегда будет искать ключ foo
на карте.Это означает, что foo.class
вернет null
на карте, которая не содержит ключ класса.Если вы действительно хотите знать класс, то вы должны использовать getClass()
:
def map = [name: 'Gromit', likes: 'cheese', id: 1234]
assert map.class == null
assert map.get('class') == null
assert map.getClass() == LinkedHashMap // this is probably what you want