Necesito datos específicos para un informe, entonces poniendo toda la información de un objeto padre
Object1
Tiene muchos atributos, atributos de los objetos
Object11, Object12, Object13, attr1, attr2...
Los atributos tiene muchos atributos demasiado
Object111, Object131, Object132,..
por ahora tengo 5 atributos de datos de nivel.
Cuando envío de información a mi informe que dice, error: causas: null
object1.getIdObject11().getIdObject111().getDescription;
Se trows error porque Object111 es nulo
He intentado utilizar
object1.getIdObject11().getIdObject111().getDescription==null?'':object1.getIdObject11().getIdObject111().getDescription;
pero sólo verificar si la descripción es nulo, y arroja el mismo error Luego traté de verificar Objeto
if(object1.getIdObject11().getIdObject111() == null) {
var = object1.getIdObject11().getIdObject111().getDescription;
} else {
var = "";
}
Pero cuando Object11 es nulo, se lanza el mismo error.
No creo que su camino una buena haciendo esto para cada atributo (que conseguir como 30 atributos)
if(object1.getIdObject11()!=null) {
if(object1.getIdObject11().getIdObject111()!=null) {
if(object1.getIdObject11().getIdObject111().getIdObject1111()!=null) {
//...
}
}
}
Quiero comprobar si existe un objeto nulo y el conjunto '' (en blanco) si lo es, sin un código tan grande (porque los parametros obtenido se establecen dentro de un informe, mezclado con letra).
reportline1 = "Area: "+object1.getIdObject11().getIdObject111().getName;
Un mejor código se rompe la ley de Demeter . Es por eso que es mejor refactorizar el propio diseño. Como solución alternativa, puede utilizarOptional
var = Optional.ofNullable(object1)
.map(o -> o.getIdObject11())
.map(o -> o.getIdObject111())
.map(o -> o.getDescription())
.orElse("")