Esto se llama autoboxing.
Tenga en cuenta que seguirá creando objetos verdaderos Short
automáticamente, y estos ocupan 16 bytes en su pila, lo mismo que un objeto Entero. Solo los valores nativos short
solo ocupan 2 bytes (pero no se pueden poner en java.util.collections
).
En muchas situaciones
list.put((short) 12345);
list.put((short) 12345);
, de hecho, incluso crear dos tales objetos, es decir, 32 bytes más la memoria ocupada por el objeto de lista. Los punteros almacenados en la lista ya ocupan de 4 a 8 bytes cada uno.
Si tiene unas pocas instancias, está bien. Si tiene varios millones, esto puede afectar negativamente el rendimiento debido a la administración y uso de la memoria. Con los pantalones cortos crudos, por lo general, puede ir 10 veces más lejos antes de volverse lento o quedarse sin memoria.
+1 para la advertencia sobre los NPE. Para hacerlo explícito: 'list.add (null); short s = list.get (0); 'El get básicamente compilará hasta' ((Short) list.get (0)). shortValue() ', que obtendrá un' null', lo convertirá en 'Short' , y lanza un NPE en 'shortValue()'. – yshavit