2010-11-06 9 views
7

Cualquiera puede explicar por qué al llamar a la clase [:]. En un mapa se devuelve nulo mientras se llama [:]. GetClass() devuelve el resultado esperado. Consulte el siguiente ejemploResolución de la clase de Groovy 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 

Ken

Respuesta

11

Aquí está la respuesta

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

EDITAR - Por supuesto. Creo que la semántica de un mapa son tales que si tiene

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

que se supone que ser capaz de acceder a las entradas en el mapa como

m.one 

en otras palabras, el acceso en el mapa es como obtener una propiedad en el objeto del mapa. Si

m.class 

regresaron a la clase, se rompería esa semántica, porque la 'clase' no es una clave añadido al mapa por el programador.

Eso es lo que deduzco ....

+1

Genial, su respuesta es bastante incoherente, ¿puedes ponerlo en claro? – ken

+0

@ken editó mi respuesta con mi interpretación – hvgotcodes

+1

Explicación muy clara amigo, esta debería ser la respuesta al problema JIRA en su lugar. – ken

Cuestiones relacionadas