Ir al contenido principal

Groovy - Referencia #6

Safe dereferencing

Esta es una de las características que veo como mis favoritas en Groovy y valga mencionar, es muy poderosa.
El Safe Dereferencing, proporciona una sintaxis muy reducida para acceder a objetos compuestos (Composite).

Para contextualizar, si en Java tenemos un Objeto, Persona y dentro de este tenemos una composición Address y dentro de esta State:

clas State {

String name = "NY"
String detail = "NewYork"
}

class Address {

State state = null
String street
....
}

class Persona {

// ...
Address address = null
}

Si deseamos obtener el atributo "name" del objeto State, deberíamos hacer algo como así, para evitarnos NullPointerException's

String stateName = null;
if (null != persona) {

if (null != persona.getAddress()) {

if (null != persona.getAddress().getState()) {

stateName = persona.getAddress().getState().getName();


En Groovy solo debemos hacer:

stateName = persona?,address?.state?.name

En caso que algunos de los objetos sea nulo, stateName, se le asignará null.


Un ejemplo:

void safeDereferencing () {

println("\nSafe Dereferencing")
(1..3).each { print "*** " }
println("")

def name = "Jon";
println name.size()

name = null
// name.size() dispararía un NullPointerException
// pero si uso dereference =>

// si es nulo name, devuelve null, si no devuelve el tamaño del String.
println name?.size()
} // safeDereferencing.

Salida
Safe Dereferencing
*** *** ***
3
null

Comentarios

Entradas más populares de este blog

Pasos para remover Postgresql 8.3 en MAC OS

Tomado de: http://forums.enterprisedb.com/posts/list/1437.page In Mac OSX: (Assuming Default Locations) Via uninstaller: 1) In the installation directory, there will be a uninstall-postgresql.app file will be there, executing (double clicking) that will uninstall the postgresql installation. Manual Uninstallation: 1) Stop the server sudo /sbin/SystemStarter stop postgresql-8.3 2) Remove menu shortcuts: sudo rm -rf /Applications/PostgreSQL 8.3 3) Remove the ini file sudo rm -rf /etc/postgres-reg.ini 4) Removing Startup Items sudo rm -rf /Library/StartupItems/postgresql-8.3 5) Remove the data and installed files sudo rm -rf /Library/PostgreSQL/8.3 6) Delete the user postgres sudo dscl . delete /users/postgres

Enrique Bunbury - 3 de Octubre 2009 - Heredia CR

Via periodico la nacion, me entero de este conciertazo: http://www.nacion.com/viva/2009/julio/29/viva2042768.html Ah esperar mas detalles y la venta de la entradas, "Para solo si me perdonas ..." EDIT ..... Via http://www.enriquebunbury.com/hellville.aspx (gracias a andres por su post) venta anticipada: Entradas a la venta a partir del 13 de agosto en: www.costaricaticket.com Por ahi estare anunciando, el 13 si las estan vendiendo!

Depeche Mode - Costa Rica - 8 de Octubre 2009

Que año de conciertos, primero Jaguares, ahora los Cadillacs y en Octubre Depeche Mode, solo nos falta RadioHead, para ser feliz. Así como lo oyen; desde el sitio principal de Depeche (clickea aquí ), pueden ver la siguiente fecha: Thursday, October 8th, 2009 San Jose, Costa Rica En venta: June 15th, 2009 Demasiado bueno!!!!! La cita será en Octubre, eso si no nos mata la fiebre porcina :( saludos, J