Разрешение класса Groovy Map

Любой может объяснить, почему вызов [:].class на карте возвращает null, а вызов [:].getClass() возвращает ожидаемый результат Map. См. пример ниже

1-

["test",[test:"test"],23].each {     
  println it.class 
}
class java.lang.String
null
class java.lang.Integer

2-

["test",[test:"test"],23].each {     
  println it.getClass()
}
class java.lang.String
class java.util.LinkedHashMap
class java.lang.Integer

Кен


person ken    schedule 06.11.2010    source источник


Ответы (1)


Вот ответ

https://issues.apache.org/jira/browse/GROOVY-1824

РЕДАКТИРОВАТЬ - конечно. Я думаю, что семантика карты такова, что если у вас есть

def m = [one:1, two:2]

вы должны иметь доступ к записям на карте, например

m.one

другими словами, доступ к карте аналогичен получению свойства объекта карты. Если

m.class 

вернул класс, это нарушило бы эту семантику, потому что «класс» не является ключом, добавленным к карте программистом.

Вот что я собираю....

person hvgotcodes    schedule 06.11.2010
comment
Отлично, его ответ довольно тарабарщина, можете ли вы сказать по-английски? - person ken; 06.11.2010
comment
Очень четкое объяснение, чувак, это должен быть ответ на вопрос JIRA. - person ken; 06.11.2010