-
4 comentarios »
Autoboxing/Unboxing This facility eliminates the drudgery of manual conversion between primitive types (such as int) and wrapper types (such as Integer).
Mayor comodidad, ¿no?. A veces toca un poco las narices :-D. No me entendáis mal, como opción, el autoboxing es cómodo, en casi todos los casos. El problema viene más bien por la ineptitud de algunos programadores, lease “un servidor”. Y es que es una fuente de posibles bugs, pues no te avisa (como si sucedía antes) de que estas metiendo algo que no tiene sentido, o de que quieres eliminar algo que no tiene sentido, como es mi caso.
La respuesta fácil para solucionar este tipo de cosas podría ser la de usar otra de las novedades (resulta raro hablar de novedades dos años después!) del JDK 5.0: generics, pero no siempre está disponible esa opción, como en el caso en que usemos librerías que nos pueden devolver una colección que no esta declarada con genéricos. ¿O sí?.
Pregunta para el lector de fácil comprobación: ¿puedo recibir en una declaración de genéricos el resultado de un método que no está definido con ella?
4 comentarios para “¿Es siempre bueno el outboxing?”
Deja un comentario
- New product blog: On stage now!
- Nuevo producto: Dia 1
- Comenzamos con un nuevo producto
- Vendiendo en otro países
- Twitter improving and maturing
- Desafio Abredatos: Participa!
- Five years ago
- We need a great designer
- Hablar por hablar, ese deporte
- Retos para el 2010 en Linking Paths
RSS de los últimos artículos
- Sergio en Nuevo producto: Dia 1New product: Day 1
(3 comentarios) - aitor en Nuevo producto: Dia 1New product: Day 1
(3 comentarios) - David Bonilla en Nuevo producto: Dia 1New product: Day 1
(3 comentarios) - Gabriel en Comenzamos con un nuevo producto
(5 comentarios) - xavi en Comenzamos con un nuevo producto
(5 comentarios) - David Bonilla en Comenzamos con un nuevo producto
(5 comentarios)
RSS de los últimos comentarios
-
Sobre LinkedLinked es el blog de Linking Paths, la empresa aventurera e innovadora formada por Aitor Garcia, Alberto Molpeceres y Roberto Salicio. En él hablamos de nuestros productos, ideas, y de compañías que nos sirven como guía y ejemplo. Si quieres conocernos un poco mejor puedes revisar lo que hemos escrito en los archivos.
-
Proyectos, ideas, etc.





Hola, no habia oído hablar del Autboxing/Unboxing. Siempre es bueno aprender cosas nuevas… gracias por ello.
En respuesta a tu pregunta, si he entendido bien la documentación de sun, es no, como resultado tenemos un error ClassCastException en el stack trace. es asi?
Un saludo!
A lo mejor no me he explicado. Mi pregunta era la siguiente. Dado el siguiente código (por ello lo de fácil comprobación):
import java.util.*;
public class Test{
public static void main(String[] args){
Test t = new Test();
List[Long] list = t.getList();
System.out.println(list);
}
public List getList(){
List l = new ArrayList();
l.add("String");
return l;
}
}
Dónde se añade un “String” a un lista, que se recoge en una variable declarada con genérics… se hace la comprobación de que la lista que recoge “list” como resultado del método “getList” sólo contenga instancias de “Long”?. Lamentablemente no (en Mac OS X con JDK de Apple), de modo que… no ayuda, se lo traga.
La forma en la que podríamos ayudarnos a checkear el resultado es usando los generics en otra interface (que lamentablemente usa menos gente de la que debería) del API collections: iterator.
for (Iterator[Long] i = list.iterator(); i.hasNext(); )
System.out.println(i.next().getClass().getName());
Pero claro, eso es simple comodidad a la hora de recorrerlo, no comprueba ni al insertar ni en tiempo de compilación, algo que si hace si declaramos desde el principio la colección con generics:
List[Long] n = new ArrayListLong;
Bueno, he tenido que escribir corchetes en lugar de mayor y menor para declarar los generics.
Tienes razon, y es un caso que se puede dar a menudo por descuidos del programador.
Un saludo!