Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

155
Vistas
Manera idiomática de convertir de objeto largo a primitivo largo de forma segura en Java

Estaba tratando de pasar un valor de objeto largo a un método que espera primitivo largo, pasar directamente funciona excepto en el caso en que el objeto largo es nulo. En este caso obtengo una excepción de puntero nulo.

 Long foo=null; bar.methodExpects_long_primitive(foo);

Puedo crear una verificación si foo es nulo y omitir llamar al método, como

 Long foo=null; if(foo!=null){ bar.methodExpects_long_primitive(foo); }

o si quiero proporcionar un valor predeterminado

 Long foo=null; bar.methodExpects_long_primitive(foo==null?defaultValue:foo);

¿Hay una manera elegante/mejor de hacer esto? Tengo que repetir esto varias veces en el código base y hacerlo así parece agregar muchos condicionales.

Podría crear mi propio método para hacer esto, pero me gustaría saber si ya existe algún método de biblioteca.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No hay nada integrado en Long (por ejemplo, algún método estático) para hacerlo.

Suponiendo que tiene varios métodos que aceptan long que necesita para usar esto, probablemente querrá su propio método, algo similar a

 // On some utility class, say LongUtil public static long val(Long l, long defaultvalue) { return l == null ? defaultValue : l.longValue(); }

Después

 bar.methodExpects_long_primitive(LongUtil.val(foo, defaultValue));

Por supuesto, eso no es mucho más corto que

 bar.methodExpects_long_primitive(foo == null ? defaultValue : (long)foo);

Si es solo methodExpects_long_primitive , probablemente lo modificaría para aceptar un Long en su lugar y manejaría el null dentro de él.

over 4 years ago · Santiago Trujillo Denunciar

0

A partir de Java 8 , una opción es envolver su Long en un java.util.Optional . Siempre que sea posible, pase esto en lugar de Long. Cuando debe obtener un valor largo, puede proporcionar un valor predeterminado con Optional.orElse() :

 Long foo = null; Optional<Long> optFoo = Optional.ofNullable( foo ); long longFoo = optFoo.orElse( -1L ); System.out.println( longFoo );

O puede probar si Optional tiene un valor con Optional.empty() :

 Long foo = null; Optional<Long> optFoo = Optional.ofNullable( foo ); if ( ! optFoo.empty() ) { long longFoo = optFoo.get(); System.out.println( longFoo ); }

Un buen efecto secundario de este enfoque es que está claro que el valor puede ser nulo, sin importar dónde pase el Opcional. Otra es que un intento de llamar a get() cuando el valor es nulo generará una excepción inmediatamente.

Antes de Java 8, podía usar la biblioteca de guayaba de Google, que proporciona una clase muy similar com.google.common.base.Optional .

over 4 years ago · Santiago Trujillo Denunciar

0

simplemente cambie su método para obtener el objeto Long y luego verifique si es nulo

 T methodExpects_long_primitive(Long l) { long foo = (l != null) ? l : 0L;

Si no debe el método, debe manejar la nulidad del método como escribió

 bar.methodExpects_long_primitive(foo==null?defaultValue:foo);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda