Foros del Web » Programación para mayores de 30 ;) » Java »

Una consulta simple...

Estas en el tema de Una consulta simple... en el foro de Java en Foros del Web. Estoy aprendiendo java con JDeveloper .... bueno mi pregunta es esta Que diferencia hay en estas 2 declaraciones private ArrayList codigo = new ArrayList(); private ...
  #1 (permalink)  
Antiguo 22/09/2008, 10:24
Avatar de RoggerElfo  
Fecha de Ingreso: enero-2008
Ubicación: En la ciudad de los Reyes LIMA !
Mensajes: 121
Antigüedad: 16 años, 3 meses
Puntos: 2
Exclamación Una consulta simple...

Estoy aprendiendo java con JDeveloper .... bueno mi pregunta es esta

Que diferencia hay en estas 2 declaraciones

private ArrayList codigo = new ArrayList();

private Collection codigo2 = new ArrayList();

ArrayList o Collection es lo mismo ? Tienen los mismos metodos ? (.add, .set, .remove, .get)
  #2 (permalink)  
Antiguo 22/09/2008, 14:44
 
Fecha de Ingreso: julio-2008
Ubicación: Ukraine, Donetsk
Mensajes: 43
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Una consulta simple...

Hay una diferencia significa - en el metodo segundo el nivel de abstraction es mas alto. El ejemplo: hay metodo que hace iteracion en collection para buscar algo. Si el metodo tiene la signatura
Código:
Object findSomething(ArrayList source);
él no puede acceptar ni LinkedList ni HashSet - solo ArrayList y sus descendientes. Y si hay necesidad en metodo que busca objetos en Set - debe que escribir otro metodo.
Si el metodo tiene otra signatura:
Código:
Object findSomething(Collection source);
, él puede acceptar cualquier objetos como ArrayList, LinkedList, TreeList y otros.
Conclucion: si el codigo tiene nivel de abstraction mas alto, él es mas claro, limpio y correcto.
  #3 (permalink)  
Antiguo 22/09/2008, 14:56
Avatar de RoggerElfo  
Fecha de Ingreso: enero-2008
Ubicación: En la ciudad de los Reyes LIMA !
Mensajes: 121
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Una consulta simple...

ohhh ahora entiendo todo .. gracias
  #4 (permalink)  
Antiguo 23/09/2008, 01:11
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Una consulta simple...

De todas formas, el nivel de abstracción ha de ser el adecuado, lo mismo es pasarse por alto que por bajo. El nivel más alto que te permita hacer lo que quieras sin "demasiadas molestias" suele ser el adecuado .

A nivel práctico, la diferencia es que a través de la referencia codigo2, unicamente puedes acceder al objeto usando los miembros de la clase Collection, sea lo que sea el objeto en si. A través de la referencia codigo, puedes usar los miembros de la clase ArrayList.

Pero el objeto es el mismo. Dependiendo de lo que quieras hacer dentro del metodo, es mejor declararlos de una forma o de otra.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:22.