2010-11-06 3 views
7

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

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 

Кен

ответ

11

Вот ответ

http://jira.codehaus.org/browse/GROOVY-1824

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

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

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

m.one 

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

m.class 

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

Это то, что я собираю ....

+1

Отлично, его ответ довольно тарабарен, хотя, можете ли вы наложить простой английский? – ken

+0

@ken отредактировал мой ответ с моей интерпретацией – hvgotcodes

+1

Очень четкое объяснение, чувак, это должен быть ответ на вопрос JIRA. – ken