java - metodos - ¿Por qué está permitido agregar tipos de datos primitivos a una ArrayList?
imprimir arraylist java (1)
Entiendo que es posible agregar un Objeto Integer a una ArrayList
de tipo Integer
. Eso tiene sentido para mí. Me gusta esto:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));
Pero, ¿por qué es posible agregar un tipo de datos primitivo como int en lugar de Integer
? Me gusta esto:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
¿Por qué está permitido?
Esto se llama autoboxing
. Para las clases que tienen primitivas correspondientes (por ejemplo, Long
-> long
, Integer
-> int
), Java manejará la conversión por usted.
Cabe señalar que este comportamiento viene con algunas esquinas oscuras:
- una pena de rendimiento;
- Casos de esquina: cuando
null
se desempaqueta en una primitiva, se lanzará unaNullPointerException
, que podría ser inesperada para el programador, ya que parece que una primitiva arroja la excepción.