Saltar al contenido

¿Cuándo usar Long vs long en Java?

Puede que se de el caso de que encuentres algún fallo en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

long es un primitivo, que deber tener un valor Sencillo.

Long es un objetoasi que:

  • puede ser null (que significa lo que quieras, pero “desconocido” es una interpretación común)
  • se puede pasar a un método que acepta un Object, Number, Long o long parámetro (el último gracias al desempaquetado automático)
  • se puede utilizar como un tipo de parámetro genérico, es decir List está bien, pero List es no DE ACUERDO
  • se puede serializar/deserializar a través del mecanismo de serialización de Java

Utilice siempre lo más sencillo que funcione, así que si necesita alguna de las características de Longusar Long de lo contrario usar long. La sobrecarga de un Long es sorprendentemente pequeño, pero está ahí.

No creo que haya una sola respuesta correcta. Algunas sugerencias:

  • La mayor diferencia que veo entre long y Long en este contexto es que Long tal vez null. Si existe la posibilidad de que le falten valores, el Long objeto será útil como null puede indicar valores faltantes. Si está usando primitivas, tendrá que usar algún valor especial para indicar que falta, lo que probablemente será un desastre. No es probable que la velocidad o el tamaño sean un problema a menos que esté planeando hacer una array de un millón de estas cosas y luego serializarlas.

  • Mi preferencia por la lógica de validación es lanzar algún tipo de personalizado ValidationException en el punto en que la cosa podría fallar. Si solo está creando estas cosas con un constructor, lo más simple sería validar allí, por ejemplo

     public ClientInput(Long userid, Long clientid, Map parameterMap, Long timeout_ms, boolean debug) throws ValidationException           
    
          if (userid == null) throw new ValidationException("UserId is required"); 
                ...etc, etc...
    
    

En última instancia, el ValidationException solo es útil si puede atraparlo en un punto en el que pueda hacer algo útil con él: devolverlo a un usuario o lo que sea.

1 Long es la contraparte orientada a objetos de long. La diferencia es la siguiente, y se aplica a Float to float, Integer to integer, etc.

  • long es un tipo primitivo, mientras que Long es una clase de Java (por lo que heredará Object).
  • long debe asignarse con un número válido, mientras que Long puede null
  • las instancias largas no pueden usar los beneficios de OO, mientras que las instancias largas son objetos Java reales
  • Long es serializable, por lo que será muy útil al realizar operaciones de E/S de archivos, bases de datos o redes.
  • long es más eficiente que Long teniendo en cuenta el espacio de memoria y la velocidad de procesamiento

Si está haciendo cálculos pesados, use tipos primitivos. De lo contrario, si le preocupa más el diseño, las contrapartes de objetos serán muy útiles.

2 Dado que no está utilizando ningún marco si estoy observando correctamente, le sugiero que haga una interfaz como Validado con un metodo bool validar(). Y cada vez que intente ingresar una entrada en la base de datos, llame a validar por adelantado.

Reseñas y valoraciones

Eres capaz de defender nuestra tarea ejecutando un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *